




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章基本语法,2.1变量与赋值2.2矩阵的初等运算2.3元素群运算2.4逻辑判断及流程控制2.5基本绘图方法2.6M文件及程序调试,一、M文件简介,2.6M文件及程序调试,用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件包含matlab语言代码的文件称为m文件,其扩展名为m。编辑m文件可使用各种文本编辑器。,Matlab有两种工作方式:1、交互式命令行操作方式2、M文件的编程工作方式,1、交互式命令行操作方式通常matlab以指令驱动模式工作,即在matlab窗口下当用户输入单行指令时,matlab立即处理这条指令,并显示结果,这就是matlab命令行方式。被当作数学演算纸和图形显示器来使用。命令行操作时,matlab窗口一般只允许一次执行一行上的一个或几个语句。,例如:x1=0:10 x1=012345678910如:x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1=012345678910 x2=0369x3=11.50008.50005.50002.5000,在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。,2、M文件的编程工作方式在M文件的编程工作方式,Matlab可以像其他高级计算机语言一样进行程序设计,即编制一种以.m为扩展名的Matlab程序(简称M文件),二、M文件的建立,具体的创建方法:在matlab命令窗口点击file菜单newm-file,2、工具栏的新建按钮,三、m文件的分类可以存取的M文件称命令文件(程序文件、脚本文件)可调用M文件称函数(function)文件,1、程序文件以.m格式进行存取,包含一连串的MATLAB指令和必要的注解。与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。程序运行时只需在命令窗口中键入其名称即可,(1)、用clear,closeall等语句开始,清除工作空间原有的变量与图形,以避免其它已执行的程序残留数据对本程序的影响。(2)、前几行通常是对此程序的说明。这些注释行必须以%开始,以便计算机执行时不予理会。(注释部分)(3)、程序的主体如果程序中有全局变量,即在主程序与主程序中共有的变量,应在程序中的起始部分注明。语句为:global变量名(4)、整个程序按Matlab标示符的要求其文件名,并加上.m后缀。,主要特征:,%西安电子科技大学出版社出版陈怀琛编著1999年10月初版,2004年11月第二版%求fibonacci数的程序clcclearcloseallR=input(输入fibonacci数的最大范围R=),f=11;i=1;whilef(i)+f(i+1)Rf(i+2)=f(i)+f(i+1);i=i+1;endfplot(f),注意:程序中的变量保存在工作空间中。两大部分:注释部分、程序部分,%求素数的程序clearcloseallclcN=input(输入素数的最大范围N=);x=2:N;%列出从2-N的全部自然数foru=2:sqrt(N)%依次取出除数(最大到N的平方根)n=find(rem(x,u)=0%去掉该数endx%显示结果,2、函数文件,(1)函数定义行(关键字function)functionout1,out2,.=filename(in1,in2,.)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。(2)函数体说明及有关注解以(%)开头,用以说明函数的作用及有关内容如果不希望显示某段信息,可在它的前面加空行(3)函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。,functiony=mean(x)%Mean求平均值,返回x向量所有元素的平均值%对于矩阵,返回各列平均值的行向量m,n=size(x)ifm=1m=nendy=sum(x)/m,例如:,变量不在工作空间里,matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab的能力对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。,内置函数,函数m文件的格式:function返回变量=函数名(输入变量)注释说明语句段程序语句段特定规则:函数m文件第一行必须以单词function作为引导词,必须遵循如下形式:function变量1,变量2=函数名(变量1,变量2)m文件的文件名必须是.m。程序中的变量(输出除外)均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。,局部变量,每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在内存中。并且,除了函数返回值,该函数不改变工作区中其他变量的值。然而脚本文件没有独立的工作区,当通过命令窗口调用脚本文件时,脚本文件分享主工作区,当函数调用脚本文件时,脚本文件分享主调函数的工作区。需要注意的是,如果脚本中改变了工作区中变量的值,则在脚本文件调用结束后,该变量的值发生改变。在函数中,变量默认为局部变量。,全局变量,局部变量只在一个工作区内有效,无论是函数工作区还是MATLAB主工作区。与局部变量不同,全局变量可以在定义该变量的全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其他工作区中的变量同时改变。任何函数如果需要使用全局变量,则必须首先声明,声明格式为:global变量名1变量名2如果一个M文件中包含的子函数需要访问全局变量,则需在子函数中声明该变量,如果需要在命令行中访问该变量,则需在命令行中声明该变量。,【例】全局变量应用示例,先建立函数文件wadd.m,该函数将输入的参数加权相加。functionf=wadd(x,y)%addtwovariableglobalALPHABETAf=ALPHA*x+BETA*y;,在命令窗口中输入:globalALPHABETAALPHA=1;BETA=2;s=wadd(1,2)输出为:s=5,functionx,d=root1(a,b,c)%a=input(a=);%pause(5)%b=input(b=);%A=pressanykeytocontinue.;%disp(A)%pause%c=input(c=);d=b*b-4*a*c;%disp(A)%pausex=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);,functionfout=charray(a,b,c)ifnargin=1fout=a;elseifnargin=2fout=a+b;elseifnargin=3fout=(a*b*c)/2;end,四、人机交互命令,echo指令用来控制m文件在执行过程中是否显示echoon打开所有命令文件的显示方式echooff关闭所有命令文件的显示方式,%求素数的程序N=input(输入素数的最大范围N=);x=2:N;echoon%在命令窗口中显示执行程序%列出从2-N的全部自然数foru=2:sqrt(N)%依次取出除数(最大到N的平方根)n=find(rem(x,u)=0%去掉该数endechooff%在命令窗口中不显示执行程序x%显示结果,pause暂停,等待用户响应调用格式:pause(延迟秒数)注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运行可使用Ctrl+C命令。,a=input(a=);pause(5)b=input(b=);A=pressanykeytocontinue.;disp(A)pausec=input(c=);d=b*b-4*a*c;disp(A)pausex=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a),keyboard当keyboard在m文件中出现时,它停止文件的执行并控制键盘,用于修改程序。,a=input(a=);pause(2)b=input(b=);A=pressanykeytocontinue.;disp(A)pausec=input(c=);keyboardd=b*b-4*a*c;disp(A)pausex=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a),五、程序的调试,1、matlab的命令文件是比较容易调试的,因为Matlab的查错能力很强,再加上工作空间变量的保存和显示,不需要专门的调试命令,就可以调试。,2、需要调试的主要是函数文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安装物流外包协议书
- 孩子校外托管协议书
- 外出意外受伤协议书
- 委托试验检验协议书
- 同学聚会感情协议书
- 夫妻财政约定协议书
- 安吉居民搬迁协议书
- 宗祠维修合同协议书
- 展会摊位安全协议书
- 大学插班就读协议书
- 毕业设计220kv变电站电气一次部份设计
- 安心护行 从个案分析看创伤骨科患者VTE管理低分子肝素合理应用版本
- JGT501-2016 建筑构件连接处防水密封膏
- 实验 验证牛顿第二定律
- 钻孔水文地质工程地质综合编录一览表模板
- 备用柴油发电机定期启动试验记录表
- 国企食堂运作方案
- 二年级上册心理健康教育说课稿-面对批评 全国通用
- 工程管理检讨书
- 劳务派遣合同示范文本(4篇)
- 2023年广西贺州中考语文真题及答案
评论
0/150
提交评论