MATLAB第二讲.ppt

上传人:豆**** 文档编号:25179834 上传时间:2022-07-10 格式:PPT 页数:43 大小:1.61MB
返回 下载 相关 举报
MATLAB第二讲.ppt_第1页
第1页 / 共43页
MATLAB第二讲.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《MATLAB第二讲.ppt》由会员分享,可在线阅读,更多相关《MATLAB第二讲.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

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

4、”数组的方法,通数组的方法,通用的格式:用的格式: x=a:c:b a是数组的第一个元素,是数组的第一个元素,c是间隔(如果是间隔(如果c=1,则可以缺省,则可以缺省掉,见上一页掉,见上一页x1的生成方法),若的生成方法),若(b-a)是是c的整数倍,则的整数倍,则所生成数组的最后一个元素等于所生成数组的最后一个元素等于b,否则小于,否则小于b x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 = 0 1 2 3 4 5 6 7 8 9 10 x2 = 0 3 6 9 x3 = 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-file m文件分为两类:文件分为两类: 非函数(脚本、命令)文件非函数(脚本、命令)文件 函数文件函数文件 都用扩展名都用扩展名.m 下面分别讲解下面分别讲解2.1.3非函数(脚本、命令)文件非函数(脚本、命令)文件 命令文件实际上是一串指令的集合,与在命令窗口逐行执命令文件实际上是一串指令的集合,与在命令

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

8、所以在本例中画的是y=sinx的图像,自变量取值的图像,自变量取值0, 21.创建创建m文件文件这三行命令可以在这三行命令可以在command window中输入并且执行,但是如果想保存中输入并且执行,但是如果想保存起来,以便下次使用,需要编辑成起来,以便下次使用,需要编辑成m文件文件 2.保存保存m文件:文件:File Save As关于保存路径:一般默认关于保存路径:一般默认在安装路径在安装路径matlab7work,matlab7work,也可以保存在自己需要的也可以保存在自己需要的路径路径m m文件保存的命名规则:文件保存的命名规则:1.1.文件名不要取为文件名不要取为matlabma

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

10、行非函数(命令、脚本)m文件文件 1)设置路径设置路径 注:注:如果想运行一个如果想运行一个m文件,必须确保文件,必须确保matlab能够找到这能够找到这个个m文件文件 matlab搜索文件或变量名的顺序搜索文件或变量名的顺序 工作空间中工作空间中 内部函数所在目录中内部函数所在目录中 当前目录中当前目录中 设定的搜索路径中设定的搜索路径中 所以为了让所以为了让matlab能够找到这个能够找到这个m文件有两种方法:文件有两种方法: (1)把这个把这个m文件所在路径设为当前目录文件所在路径设为当前目录 (2)把这个把这个m文件所在路径添加到文件所在路径添加到matlab的搜索路径中的搜索路径中(

11、1)直接用鼠标操作即可,在此不详细说明直接用鼠标操作即可,在此不详细说明(2)FileSet Path选择选择Add Folder 找到找到m文件所在的文件夹,确定,然后文件所在的文件夹,确定,然后Save2).运行非函数(命令、脚本)运行非函数(命令、脚本)m文件文件两种方法:两种方法:1)在这个)在这个m文件的编辑窗口文件的编辑窗口Debugrun 2)在在Command Window窗口输入这个非函数窗口输入这个非函数m文件的名称文件的名称(graph_sin),然后回车,然后回车 注:运行完毕,大家注意注:运行完毕,大家注意workspace(工作空间工作空间)中变量的中变量的变化变化

12、,可以看到可以看到workspace里出现了变量里出现了变量x, y4. m文件的编辑文件的编辑 edit 用用matlab自带的编辑器编制自带的编辑器编制m文件。文件。 例如例如: edit myfile %编辑编辑myfile.m 或者或者 File open2.1.4 函数函数m文件文件一一.函数函数m文件的几种格式及调用文件的几种格式及调用格式格式1(无返回值函数)(无返回值函数)function 函数名函数名(输入表输入表) %称为函数头称为函数头 函数体函数体例如:刚才的例子也可以用函数例如:刚才的例子也可以用函数m文件表示,我们不需要知道文件表示,我们不需要知道x,y的值,的值,

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

14、ne注意:注意:workspace里面并没有出现里面并没有出现y这个例子只有一个输入参数,还可以有多个输入参数,例如:这个例子只有一个输入参数,还可以有多个输入参数,例如: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(有返回值函数)(有返回值函数) funct

15、ion 输出表输出表函数名函数名(输入表输入表) 函数体函数体 注:其中:注:其中: 输出表输出表 是函数的返回值,若输是函数的返回值,若输 出表中只有一项,则方括号可省略。出表中只有一项,则方括号可省略。Example:已知已知 ,求,求function y=myfun(x)y=exp(x)*sin(x)+cos(x); xxexfxcossin)()4() 3()2() 1 (2ffff保存:保存:调用:调用:clearf1=myfun(1);f2=myfun(2);f3=myfun(3);f4=myfun(4);f1+f2*f3+f42 注意:注意:程序中的变量程序中的变量x,y均为局部

16、变量,不保存在工作空间中。均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。其变量只在函数运行期间有效。 还可以有多个输入参数和输出参数,在自编的函数还可以有多个输入参数和输出参数,在自编的函数m文件文件中可以调用中可以调用matlab中已有的函数,也可以调用自己编的函中已有的函数,也可以调用自己编的函数,一个函数可以嵌套,甚至调用自己(也就是递归调数,一个函数可以嵌套,甚至调用自己(也就是递归调用)。用)。 例如:请编一个函数例如:请编一个函数m文件文件:avg.m,用于求,用于求n维向量维向量x各个各个元素的平均值,函数头为:元素的平均值,函数头为:function mean=

17、avg(x,n) 输出参数输出参数mean表示表示n维向量维向量x各个元素的平均值各个元素的平均值 解:打开一个新的解:打开一个新的m文件文件 输入:输入:function mean = avg(x,n) %x是向量,是向量,n是它的维数是它的维数 mean = sum(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维向量维向量

18、x平均值平均值y 请编一个函数请编一个函数m文件文件stat.m,求,求n维向量维向量x各元素的方差,各元素的方差,要求在其中调用刚才的要求在其中调用刚才的avg.m,函数头为函数头为 function mean,st=stat(x,n)%其中其中mean为为n维向量维向量x各元素的平均值,各元素的平均值,st为方差为方差这个问题作为今天作业的一道题,然后用这个函数求向量这个问题作为今天作业的一道题,然后用这个函数求向量x=1,2,4,8,9,-1.1的平均值与方差的平均值与方差 下面举一个递归调用的例子下面举一个递归调用的例子function y=factorial(k)if k1 y=k*

19、factorial(k-1);elseif k=1 y=1;elseif k=0; y=1;else error(输入参数只能为非负整数输入参数只能为非负整数)end%大家试着读读这是用来求这么的函数大家试着读读这是用来求这么的函数二、总结函数二、总结函数 把一个比较大的任务分解为多个比较小的任务,它们之间把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。通过调用实现参数传递,小任务可以是函数。 1 函数调用函数调用l 常见的函数调用形式为:常见的函数调用形式为:out1,out2,=function(in1,in2,)l 一个函数可以嵌套,也可以调用其

20、它的函数,甚至调用自一个函数可以嵌套,也可以调用其它的函数,甚至调用自己(也就是递归调用)。己(也就是递归调用)。l 函数文件,函数名称和文件名必须相同。函数文件,函数名称和文件名必须相同。l 需要注意函数文件的放置位置,一般自己的函数文件放在需要注意函数文件的放置位置,一般自己的函数文件放在当前目录;如果对一个专题有了足够多的函数,可以生成当前目录;如果对一个专题有了足够多的函数,可以生成一个工具箱,放在一个固定的目录下,并在一个工具箱,放在一个固定的目录下,并在MATLAB中中加入这个目录路径即可。加入这个目录路径即可。2 参数传递参数传递l 在在MATLAB中,参数具有自己的专有工作空间

21、。函数中中,参数具有自己的专有工作空间。函数中的参数和命令行参数不在一个空间中,它们的唯一联系的参数和命令行参数不在一个空间中,它们的唯一联系为函数的输入输出变量。输入参数在函数中是可读的,为函数的输入输出变量。输入参数在函数中是可读的,但在函数中的任何改动不会传递回上一级空间。但在函数中的任何改动不会传递回上一级空间。l 使用使用global命令可以将变量说明为全局的,则在函数、命命令可以将变量说明为全局的,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。避免使用全局变量。3 函数注意函数注意l 函数有它们自己的专

22、用工作空间,它与函数有它们自己的专用工作空间,它与MATLAB 的工作的工作空间分开。函数内变量与空间分开。函数内变量与MATLAB 工作空间之间唯一的工作空间之间唯一的联系是函数的输入和输出变量。如果函数任一输入变量联系是函数的输入和输出变量。如果函数任一输入变量值发生变化,其变化仅在函数内出现,不影响值发生变化,其变化仅在函数内出现,不影响MATLAB 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间

23、失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。变量存储信息是不可能的。l 如果变量说明是全局的如果变量说明是全局的,函数可以与其它函数、函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为了在函数内或工作空间和递归调用本身共享变量。为了在函数内或MATLAB 工作空间中访问全局变量,在每一个所希望的工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。工作空间,变量必须说明是全局的。 l 实际编程中,无论什么时候应尽量避免使用全局变量。实际编程中,无论什么时候应尽量避免使用全局变量。l 从函数从函数M 文件内可以调用脚本文件。在这种情

24、况下,脚文件内可以调用脚本文件。在这种情况下,脚本文件查看函数工作空间,不查看本文件查看函数工作空间,不查看MATLAB 工作空间。工作空间。从函数从函数M 文件内调用的脚本文件不必用调用函数编译到文件内调用的脚本文件不必用调用函数编译到内存。函数每调用一次,它们就被打开和解释。因此,从内存。函数每调用一次,它们就被打开和解释。因此,从函数函数M 文件内调用脚本文件减慢了函数的执行。文件内调用脚本文件减慢了函数的执行。思考:思考:总结非函数总结非函数m文件与函数文件与函数m文件的区别文件的区别非函数非函数函数函数格式格式命令行与注释命令行与注释函数头、注释、函数体函数头、注释、函数体变量变量全

25、局,存放在全局,存放在workspace局部,临时,仅运行时局部,临时,仅运行时有效有效保存的保存的m文件名称文件名称符合规则即可符合规则即可符合规则并且函数名与符合规则并且函数名与文件名称必须一致文件名称必须一致运行运行文件名,回车文件名,回车runCommand window中给中给输入参数赋值后调用输入参数赋值后调用作业作业1.求方差那道题求方差那道题2.把上节课的作业保存成非函数把上节课的作业保存成非函数m文件,名字文件,名字exercise1.m3. ,计算计算f(2), f(1)f(2)+f 2(3) 。编函数编函数m文件文件exercise2_f.m表示上述表示上述f,然后调用,然后调用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁