




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB 第二讲,2.1 脚本文件(M文件),对于简单问题,使用直接输入命令简单有效;对稍复杂和 多次重复的应用,直接输入命令比较麻烦。MATLAB提供 了逻辑解决方案,它允许用户把多个命令放在一个简单的文 本文件中,如同在MATLAB中键入命令一般,这种文件称 为脚本文件,由于脚本文件以m为扩展名,它常称为M文 件。 脚本文件为文本形式的,对跨平台处理十分有利。 使用脚本文件,可以把命令保存在磁盘上,便于以后的访 问;同时对使用大的数组也带来的方便;增加注释可以为脚 本中的命令作文挡以免以后忘记。,2.1.1 matlab的工作模式,matlab的工作模式有两种: 1.指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是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,注:产生等距行向量的方法: 冒号生成法 这是通过“步长”设定,生成一维“行”数组的方法,通用的格式: 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窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。,命令行方式程序可读性差,而且不能存储,对于复杂的 问题,应编写成能存储的程序文件。 2.m文件模式 将matlab语句构成的程序存储成以m为扩展名的文件, 然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允 许一次执行一行上的一个或几个语句。,2.1.2 m文件的创建,m文件的类型是普通的文本文件 具体的创建方法: 在matlab命令窗 口点击file 菜单 new m-file,m文件分为两类: 非函数(脚本、命令)文件 函数文件 都用扩展名.m 下面分别讲解,2.1.3非函数(脚本、命令)文件,命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。 例如:画出函数y=sinx的图像,x范围0,2 matlab命令: x=0:2*pi/180:2*pi; %x为一个行向量,第一个元素为0,最后一个元素为2,步长2/180 y=sin(x); %y也为一个向量,每个元素是x对应元素的正弦值 plot(x,y) %画图,x中的元素为横坐标,y中相应的元素为纵坐标 %所以在本例中画的是y=sinx的图像,自变量取值0, 2,1.创建m文件,这三行命令可以在command window中输入并且执行,但是如果想保存起来,以便下次使用,需要编辑成m文件,2.保存m文件:File Save As,关于保存路径:一般默认在安装路径matlab7work,也可以保存在自己需要的路径,m文件保存的命名规则: 1.文件名不要取为matlab的一个固有函数,m 文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。 原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。 2.名字不能仅有数字,把这个m文件命名为graph_sin.m存放在 c:matlab7work中,3.运行非函数(命令、脚本)m文件,1)设置路径 注:如果想运行一个m文件,必须确保matlab能够找到这个m文件 matlab搜索文件或变量名的顺序 工作空间中 内部函数所在目录中 当前目录中 设定的搜索路径中 所以为了让matlab能够找到这个m文件有两种方法: (1)把这个m文件所在路径设为当前目录 (2)把这个m文件所在路径添加到matlab的搜索路径中,(1)直接用鼠标操作即可,在此不详细说明 (2)FileSet Path选择Add Folder 找到m文件所在的文件夹,确定,然后Save,2).运行非函数(命令、脚本)m文件 两种方法: 1)在这个m文件的编辑窗口Debugrun,2)在Command Window窗口输入这个非函数m文件的名称(graph_sin),然后回车 注:运行完毕,大家注意workspace(工作空间)中变量的变化,可以看到workspace里出现了变量x, y,4. m文件的编辑,edit 用matlab自带的编辑器编制m文件。 例如: edit myfile %编辑myfile.m 或者 File open,2.1.4 函数m文件,一.函数m文件的几种格式及调用 格式1(无返回值函数) function 函数名(输入表) %称为函数头 函数体 例如:刚才的例子也可以用函数m文件表示,我们不需要知道x,y的值,只想得到图像,可以新建一个m文件,输入 function sine(x) %函数名为sine,输入参数为x y=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 这个例子只有一个输入参数,还可以有多个输入参数,例如:,function sine1(x,y) %函数名为sine,输入参数为x,y plot(x,y) 保存为sine1.m 在command window中调用 x=0:2*pi/180:2*pi; y=sin(x);%给x,y赋值 sine1(x,y) 注意:调用的时候一定要注意输入参数的顺序要对应上,格式2(有返回值函数) function 输出表函数名(输入表) 函数体 注:其中: 输出表 是函数的返回值,若输 出表中只有一项,则方括号可省略。,Example: 已知 ,求 function y=myfun(x) y=exp(x)*sin(x)+cos(x);,保存:,调用: clear f1=myfun(1); f2=myfun(2); f3=myfun(3); f4=myfun(4); f1+f2*f3+f42,注意:程序中的变量x,y均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。,还可以有多个输入参数和输出参数,在自编的函数m文件中可以调用matlab中已有的函数,也可以调用自己编的函数,一个函数可以嵌套,甚至调用自己(也就是递归调用)。 例如:请编一个函数m文件:avg.m,用于求n维向量x各个元素的平均值,函数头为:function mean=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的各个元素平均值 clear x=1,2,4,8,9,-1.1;%输入x y=avg(x,6)%求6维向量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*factorial(k-1); elseif k=1 y=1; elseif k=0; y=1; else error(输入参数只能为非负整数) end %大家试着读读这是用来求这么的函数,二、总结函数,把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。 1 函数调用 常见的函数调用形式为: out1,out2,=function(in1,in2,) 一个函数可以嵌套,也可以调用其它的函数,甚至调用自己(也就是递归调用)。 函数文件,函数名称和文件名必须相同。 需要注意函数文件的放置位置,一般自己的函数文件放在当前目录;如果对一个专题有了足够多的函数,可以生成一个工具箱,放在一个固定的目录下,并在MATLAB中加入这个目录路径即可。,2 参数传递,在MATLAB中,参数具有自己的专有工作空间。函数中的参数和命令行参数不在一个空间中,它们的唯一联系为函数的输入输出变量。输入参数在函数中是可读的,但在函数中的任何改动不会传递回上一级空间。 使用global命令可以将变量说明为全局的,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。,3 函数注意,函数有它们自己的专用工作空间,它与MATLAB 的工作空间分开。函数内变量与MATLAB 工作空间之间唯一的联系是函数的输入和输出变量。如果函数任一输入变量值发生变化,其变化仅在函数内出现,不影响MATLAB 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。,如果变量说明是全局的,函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为了在函数内或MATLAB 工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。 实际编程中,无论什么时候应尽量避免使用全局变量。,从函数M 文件内可以调用脚本文件。在这种情况下,脚本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烘培面包活动方案
- 烘焙厂商活动方案
- 烘焙生日活动方案
- 绩效目标审核管理办法
- 药品注册管理办法补充
- 眉山柑橘农业管理办法
- 宜良垃圾管理办法细则
- 寺院捐赠资金管理办法
- 超前地质预报管理办法
- 就医票据收纳管理办法
- 学校空调维修合同书
- 销售部门报价管理制度
- 集合、复数、不等式与常用逻辑用语(4考点+19题型)-2025年高考数学复习专练(解析版)
- 陪诊员培训课件
- 氯苯唑酸葡胺软胶囊-药品临床应用解读
- 2024-2025学年深圳市初三英语中考适应性考试英语试题(含答案)
- 2024安阳文峰区中小学教师招聘考试试题及答案
- T-UNP 253-2024 语音数据标注系统技术规范
- 2024年青海省省直机关遴选公务员考试真题
- 超声科临床操作中的伦理与法规
- 2025届辽宁省沈阳市东北育才实验学校五下数学期末综合测试模拟试题含答案
评论
0/150
提交评论