MATLAB第二讲

上传人:cn****1 文档编号:570251354 上传时间:2024-08-03 格式:PPT 页数:43 大小:1.61MB
返回 下载 相关 举报
MATLAB第二讲_第1页
第1页 / 共43页
MATLAB第二讲_第2页
第2页 / 共43页
MATLAB第二讲_第3页
第3页 / 共43页
MATLAB第二讲_第4页
第4页 / 共43页
MATLAB第二讲_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《MATLAB第二讲》由会员分享,可在线阅读,更多相关《MATLAB第二讲(43页珍藏版)》请在金锄头文库上搜索。

1、MATLAB第二讲第二讲2.1 脚本文件(脚本文件(M文件)文件) 对于简单问题,使用直接输入命令简单有效;对稍复杂和对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。多次重复的应用,直接输入命令比较麻烦。MATLAB提供提供了逻辑解决方案,它允许用户把多个命令放在一个简单的文了逻辑解决方案,它允许用户把多个命令放在一个简单的文本文件中,如同在本文件中,如同在MATLAB中键入命令一般,这种文件称中键入命令一般,这种文件称为脚本文件,由于脚本文件以为脚本文件,由于脚本文件以m为扩展名,它常称为为扩展名,它常称为M文文件。件。 脚本文件为文本形式的,对跨平台

2、处理十分有利。脚本文件为文本形式的,对跨平台处理十分有利。使用脚本文件,可以把命令保存在磁盘上,便于以后的访使用脚本文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便;增加注释可以为脚问;同时对使用大的数组也带来的方便;增加注释可以为脚本中的命令作文挡以免以后忘记。本中的命令作文挡以免以后忘记。2.1.1 matlab的工作模式的工作模式matlab的工作模式有两种:的工作模式有两种:1.指令驱动模式指令驱动模式 通常通常matlab以指令驱动模式工作,即在以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,窗口下当用户输入单行指令时,matlab 立立

3、即处理这条指令,并显示结果,这就是即处理这条指令,并显示结果,这就是matlab命命令行方式。令行方式。 命令行操作时,命令行操作时,matlab窗口只允许一次执行窗口只允许一次执行一行上的一个或几个语句。一行上的一个或几个语句。例如:例如:x1=0:10x1 = 0 1 2 3 4 5 6 7 8 9 10x2=0:3:11x2 = 0 3 6 9x3=11.5:-3:0x3 = 11.5000 8.5000 5.5000 2.5000注:注:产生等距行向量的方法:产生等距行向量的方法:冒号生成法冒号生成法这是通过这是通过“步长步长”设定,生成一维设定,生成一维“行行”数组的方法,通数组的方

4、法,通用的格式:用的格式:x=a:c:ba是数组的第一个元素,是数组的第一个元素,c是间隔(如果是间隔(如果c=1,则可以缺省,则可以缺省掉,见上一页掉,见上一页x1的生成方法),若的生成方法),若(b-a)是是c的整数倍,则的整数倍,则所生成数组的最后一个元素等于所生成数组的最后一个元素等于b,否则小于,否则小于bx1=0:10,x2=0:3:11,x3=11.5:-3:0x1 = 0 1 2 3 4 5 6 7 8 9 10x2 = 0 3 6 9x3 = 11.5000 8.5000 5.5000 2.5000在在matlab窗口输入数据和命令进行计算时,当处理复杂问窗口输入数据和命令进

5、行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑题和大量数据时是不方便的。因此应编辑m文件。文件。 命令行方式程序可读性差,而且不能存储,对于复杂的命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。问题,应编写成能存储的程序文件。2.m文件模式文件模式 将将matlab语句构成的程序存储成以语句构成的程序存储成以m为扩展名的文件,为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行

6、上的一个或几个语句。许一次执行一行上的一个或几个语句。2.1.2 m文件的创建文件的创建m文件的类型是普通的文件的类型是普通的文本文件文本文件具体的创建方法:具体的创建方法:v在在matlab命令窗命令窗 口点击口点击file 菜单菜单 new m-filem文件分为两类:文件分为两类:非函数(脚本、命令)文件非函数(脚本、命令)文件函数文件函数文件都用扩展名都用扩展名.m下面分别讲解下面分别讲解2.1.3非函数(脚本、命令)文件非函数(脚本、命令)文件命令文件实际上是一串指令的集合,与在命令窗口逐行执命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输

7、入输出参行文件中的所有指令,其结果是一样的。没有输入输出参数。数。例如:画出函数例如:画出函数y=sinx的图像,的图像,x范围范围0,2matlab命令:命令:x=0:2*pi/180:2*pi;%x为一个行向量一个行向量,第一个元素第一个元素为0,最后一个元素最后一个元素为2,步步长2/180y=sin(x); %y也也为一个向量,每个元素是一个向量,每个元素是x对应元素的正弦元素的正弦值plot(x,y) %画画图,x中的元素中的元素为横坐横坐标,y中相中相应的元素的元素为纵坐坐标%所以在本例中画的是所以在本例中画的是y=sinx的的图像,自像,自变量取量取值0, 21.创建创建m文件文

8、件这三行命令可以在这三行命令可以在command window中输入并且执行,但是如果想保存中输入并且执行,但是如果想保存起来,以便下次使用,需要编辑成起来,以便下次使用,需要编辑成m文件文件2.保存保存m文件:文件:File Save As关于保存路径:一般默认关于保存路径:一般默认在安装路径在安装路径matlab7work,matlab7work,也可以保存在自己需要的也可以保存在自己需要的路径路径m m文件保存的命名规则:文件保存的命名规则:1.1.文件名不要取为文件名不要取为matlabmatlab的一个固有函数的一个固有函数,m ,m 文件名的命名尽量不文件名的命名尽量不要是简单的英

9、文单词,最要是简单的英文单词,最好是由大小写英文好是由大小写英文/ /数字数字/ /下划线等组成。下划线等组成。 原因是原因是简单的单词命名容易与简单的单词命名容易与matlabmatlab内部函数名同名,内部函数名同名,结果会出现一些莫名其妙结果会出现一些莫名其妙的错误。的错误。2.2.名字不能仅有数字名字不能仅有数字 把这个把这个m m文件命名为文件命名为graph_sin.mgraph_sin.m存放在存放在c:matlab7workc:matlab7work中中3.运行非函数(命令、脚本)运行非函数(命令、脚本)m文件文件1)设置路径设置路径注:注:如果想运行一个如果想运行一个m文件,

10、必须确保文件,必须确保matlab能够找到这能够找到这个个m文件文件matlab搜索文件或变量名的顺序搜索文件或变量名的顺序工作空间中工作空间中内部函数所在目录中内部函数所在目录中当前目录中当前目录中设定的搜索路径中设定的搜索路径中所以为了让所以为了让matlab能够找到这个能够找到这个m文件有两种方法:文件有两种方法:(1)把这个把这个m文件所在路径设为当前目录文件所在路径设为当前目录(2)把这个把这个m文件所在路径添加到文件所在路径添加到matlab的搜索路径中的搜索路径中(1)直接用鼠标操作即可,在此不详细说明直接用鼠标操作即可,在此不详细说明(2)FileSet Path选择Add F

11、older 找到找到m文件所在的文件文件所在的文件夹,确定,然后,确定,然后Save2).运行非函数(命令、脚本)运行非函数(命令、脚本)m文件文件两种方法:两种方法:1)在这个)在这个m文件的编辑窗口文件的编辑窗口Debugrun2)在在Command Window窗口输入这个非函数窗口输入这个非函数m文件的名称文件的名称(graph_sin),然后回车,然后回车注:运行完毕,大家注意注:运行完毕,大家注意workspace(工作空间工作空间)中变量的变中变量的变化化,可以看到可以看到workspace里出现了变量里出现了变量x, y4. m文件的编辑文件的编辑edit 用用matlab自带

12、的编辑器编制自带的编辑器编制m文件。文件。例如例如:edit myfile %编辑编辑myfile.m或者或者File open2.1.4 函数函数m文件文件一一.函数函数m文件的几种格式及调用文件的几种格式及调用格式格式1(无返回值函数)(无返回值函数)function 函数名函数名(输入表输入表) %称为函数头称为函数头 函数体函数体例如:刚才的例子也可以用函数例如:刚才的例子也可以用函数m文件表示,我们不需要知道文件表示,我们不需要知道x,y的值,的值,只想得到图像,可以新建一个只想得到图像,可以新建一个m文件,输入文件,输入function sine(x)%函数名为函数名为sine,输

13、入参数为输入参数为xy=sin(x);plot(x,y)注意:注意:保存的时候函数名必须与定义它的文件名主名相同,即在这个例子保存的时候函数名必须与定义它的文件名主名相同,即在这个例子里,这个文件应该保存为里,这个文件应该保存为sine.m运行:运行:(1)设置路径,与非函数设置路径,与非函数m文件相同文件相同(2)在在command window中输入:中输入:x=0:2*pi/180:2*pi; %给x赋值sine(x) %调用函数用函数sine注意:注意:workspace里面并没有出里面并没有出现y这个例子只有一个个例子只有一个输入参数,入参数,还可以有多个可以有多个输入参数,例如:入

14、参数,例如:function sine1(x,y)%函数名为函数名为sine,输入参数为输入参数为x,yplot(x,y)保存保存为sine1.m在在command window中调用中调用x=0:2*pi/180:2*pi; y=sin(x);%给x,y赋值sine1(x,y)注意:注意:调用的用的时候一定要注意候一定要注意输入参数的入参数的顺序要序要对应上上格式格式2(有返回值函数)(有返回值函数)function 输出表输出表函数名函数名(输入表输入表) 函数体函数体注:其中:注:其中: 输出表输出表 是函数的返回值,若输是函数的返回值,若输 出表中只有一项,则方括号可省略。出表中只有一

15、项,则方括号可省略。Example:已知已知 ,求,求function y=myfun(x)y=exp(x)*sin(x)+cos(x); 保存:保存:调用:调用:clearf1=myfun(1);f2=myfun(2);f3=myfun(3);f4=myfun(4);f1+f2*f3+f42注意:注意:程序中的变量程序中的变量x,y均为局部变量,不保存在工作空间中。均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。其变量只在函数运行期间有效。还可以有多个输入参数和输出参数,在自编的函数还可以有多个输入参数和输出参数,在自编的函数m文件文件中可以调用中可以调用matlab中已有的函

16、数,也可以调用自己编的函中已有的函数,也可以调用自己编的函数,一个函数可以嵌套,甚至调用自己(也就是递归调用)数,一个函数可以嵌套,甚至调用自己(也就是递归调用)。例如:请编一个函数例如:请编一个函数m文件文件:avg.m,用于求,用于求n维向量维向量x各个各个元素的平均值,函数头为:元素的平均值,函数头为:function mean=avg(x,n)输出参数输出参数mean表示表示n维向量维向量x各个元素的平均值各个元素的平均值解:打开一个新的解:打开一个新的m文件文件输入:输入:function mean = avg(x,n) %x是向量,是向量,n是它的维数是它的维数 mean = su

17、m(x)/n; %返回值是返回值是x所有元素的平均值所有元素的平均值sum(x) 表示对向量表示对向量x的各个元素求和的各个元素求和下面利用下面利用avg.m求向量求向量x=1,2,4,8,9,-1.1的各个元素平均值的各个元素平均值clearx=1,2,4,8,9,-1.1;%输入输入xy=avg(x,6)%求求6维向量维向量x平均值平均值y请编一个函数请编一个函数m文件文件stat.m,求,求n维向量维向量x各元素的方差,各元素的方差,要求在其中调用刚才的要求在其中调用刚才的avg.m,函数头为函数头为 function mean,st=stat(x,n)%其中其中mean为为n维向量维向

18、量x各元素的平均值,各元素的平均值,st为方差为方差这个问题作为今天作业的一道题,然后用这个函数求向量这个问题作为今天作业的一道题,然后用这个函数求向量x=1,2,4,8,9,-1.1的平均值与方差的平均值与方差下面举一个递归调用的例子下面举一个递归调用的例子function y=factorial(k)if k1 y=k*factorial(k-1);elseif k=1 y=1;elseif k=0; y=1;else error(输入参数只能为非负整数输入参数只能为非负整数)end%大家试着读读这是用来求这么的函数大家试着读读这是用来求这么的函数二、总结函数二、总结函数把一个比较大的任务

19、分解为多个比较小的任务,它们之间把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。通过调用实现参数传递,小任务可以是函数。1 函数调用函数调用l常见的函数调用形式为:常见的函数调用形式为:out1,out2,=function(in1,in2,)l一个函数可以嵌套,也可以调用其它的函数,甚至调用自一个函数可以嵌套,也可以调用其它的函数,甚至调用自己(也就是递归调用)。己(也就是递归调用)。l函数文件,函数名称和文件名必须相同。函数文件,函数名称和文件名必须相同。l需要注意函数文件的放置位置,一般自己的函数文件放在需要注意函数文件的放置位置,一般自己的函数

20、文件放在当前目录;如果对一个专题有了足够多的函数,可以生成当前目录;如果对一个专题有了足够多的函数,可以生成一个工具箱,放在一个固定的目录下,并在一个工具箱,放在一个固定的目录下,并在MATLAB中中加入这个目录路径即可。加入这个目录路径即可。2 参数传递参数传递l在在MATLAB中,参数具有自己的专有工作空间。函数中中,参数具有自己的专有工作空间。函数中的参数和命令行参数不在一个空间中,它们的唯一联系的参数和命令行参数不在一个空间中,它们的唯一联系为函数的输入输出变量。输入参数在函数中是可读的,为函数的输入输出变量。输入参数在函数中是可读的,但在函数中的任何改动不会传递回上一级空间。但在函数

21、中的任何改动不会传递回上一级空间。l使用使用global命令可以将变量说明为全局的,则在函数、命命令可以将变量说明为全局的,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。避免使用全局变量。3 函数注意函数注意l函数有它们自己的专用工作空间,它与函数有它们自己的专用工作空间,它与MATLAB 的工作的工作空间分开。函数内变量与空间分开。函数内变量与MATLAB 工作空间之间唯一的工作空间之间唯一的联系是函数的输入和输出变量。如果函数任一输入变量联系是函数的输入和输出变量。如果函数任一输入变量值发生变化,其变化仅在函数

22、内出现,不影响值发生变化,其变化仅在函数内出现,不影响MATLAB 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。变量存储信息是不可能的。l如果变量说明是全局的如果变量说明是全局的,函数可以与其它函数、函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为了在函数内或工作空间和递归调用本身共享变量。为了在函数内或MAT

23、LAB 工作空间中访问全局变量,在每一个所希望的工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。工作空间,变量必须说明是全局的。 l实际编程中,无论什么时候应尽量避免使用全局变量。实际编程中,无论什么时候应尽量避免使用全局变量。l从函数从函数M 文件内可以调用脚本文件。在这种情况下,脚本文件内可以调用脚本文件。在这种情况下,脚本文件查看函数工作空间,不查看文件查看函数工作空间,不查看MATLAB 工作空间。从工作空间。从函数函数M 文件内调用的脚本文件不必用调用函数编译到内存。文件内调用的脚本文件不必用调用函数编译到内存。函数每调用一次,它们就被打开和解释。因此,从函数

24、函数每调用一次,它们就被打开和解释。因此,从函数M 文件内调用脚本文件减慢了函数的执行。文件内调用脚本文件减慢了函数的执行。思考:思考:总结非函数总结非函数m文件与函数文件与函数m文件的区别文件的区别非函数非函数函数函数格式格式命令行与注释命令行与注释函数头、注释、函数体函数头、注释、函数体变量变量全局,存放在全局,存放在workspace局部,临时,仅运行时局部,临时,仅运行时有效有效保存的保存的m文件名称文件名称符合规则即可符合规则即可符合规则并且函数名与符合规则并且函数名与文件名称必须一致文件名称必须一致运行运行文件名,回车文件名,回车runCommand window中给中给输入参数赋值后调用输入参数赋值后调用作业作业1.求方差那道题求方差那道题2.把上节课的作业保存成非函数把上节课的作业保存成非函数m文件,名字文件,名字exercise1.m3. ,计算计算f(2), f(1)f(2)+f 2(3) 。编函数编函数m文件文件exercise2_f.m表示上述表示上述f,然后调用,然后调用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号