




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、matlab 第二讲第二讲 2.1 脚本文件(脚本文件(m文件)文件) 对于简单问题,使用直接输入命令简单有效;对稍复杂和对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。多次重复的应用,直接输入命令比较麻烦。matlab提供提供了逻辑解决方案,它允许用户把多个命令放在一个简单的文了逻辑解决方案,它允许用户把多个命令放在一个简单的文本文件中,如同在本文件中,如同在matlab中键入命令一般,这种文件称中键入命令一般,这种文件称为脚本文件,由于脚本文件以为脚本文件,由于脚本文件以m为扩展名,它常称为为扩展名,它常称为m文文件。件。 脚本文件为文本形式的,对跨
2、平台处理十分有利。脚本文件为文本形式的,对跨平台处理十分有利。使用脚本文件,可以把命令保存在磁盘上,便于以后的访使用脚本文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便;增加注释可以为脚问;同时对使用大的数组也带来的方便;增加注释可以为脚本中的命令作文挡以免以后忘记。本中的命令作文挡以免以后忘记。2.1.1 matlab的工作模式的工作模式 matlab的工作模式有两种:的工作模式有两种: 1.指令驱动模式指令驱动模式 通常通常matlab以指令驱动模式工作,即在以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,窗口下当用户输入单行指令时,matla
3、b 立立即处理这条指令,并显示结果,这就是即处理这条指令,并显示结果,这就是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.文件名不要取为文件名不要取为matlab
9、matlab的一个固有函的一个固有函数数,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) %调用函数调用函数
14、sine注意:注意: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(有返回值函数)(有返回值函数) fun
15、ction 输出表输出表函数名函数名(输入表输入表) 函数体函数体 注:其中:注:其中: 输出表输出表 是函数的返回值,若输是函数的返回值,若输 出表中只有一项,则方括号可省略。出表中只有一项,则方括号可省略。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 mea
17、n=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=
19、k*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 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。变量存储信息是不可能的。l 如果变量说明是全局的如果变量说明是全局的,函数可以与其它函数、函数可以与其它函数、matlab 工作空间和递归调用本身共享变量。为了在函数内或工作空间和递归调用本身共享变量。为了在函数内或matlab 工作空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁商场场地合同
- 公司员工激励演讲稿
- 养老护理行业老年人照护需求评估
- 肉羊养殖购销合同
- 生物医药领域新药研发投资合同
- 有关个人向公司借款协议书
- 城市道路施工安全管理规定
- 好品质故事解读
- 电影制作公司演员拍摄安全协议
- 2025年汉语拼音yw助力企业营销策略分析
- 《智能制造技术基础》课件-第5章 智能制造系统
- 苏教版科学五年级下册全册教案(含反思)
- 水下抛石施工方案
- 《法官检察官》课件
- 《优衣库公司基层员工培训现状及问题研究(9400字)》
- 2024年度网易游戏开发与发行合同6篇
- 高考语文复习:分析小说人物心理 课件
- 图解自然资源部《自然资源领域数据安全管理办法》
- 2023-2024学年广东省广州市天河区七年级(上)期末英语试卷
- 2024-2030年中国液晶显示模组行业发展趋势与前景规划分析报告
- DB34T∕ 2423-2015 安徽省城市道路交叉口信号控制设计规范
评论
0/150
提交评论