MatlabM文件编程.ppt_第1页
MatlabM文件编程.ppt_第2页
MatlabM文件编程.ppt_第3页
MatlabM文件编程.ppt_第4页
MatlabM文件编程.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

M文件及程序调试,本章详细讲解利用M语言进行编程的方法讲述的主要内容:主程序文件函数文件M文件的调试,(1)指令驱动模式即在MATLABM命令行窗口下用户输入单行指令时,MATLAB立即处理这条指令,并显示结果,这就是MATLAB命令行方式。缺点:命令行方式程序可读性差,而且不能存储,当处理复杂问题和大量数据时很不方便。(2)M文件模式将MATLAB语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。,MATLAB的工作模式,M语言文件可以分为主程序文件和函数文件一个M语言文件就是由若干MATLAB的命令组合在一起构成的。M语言文件是标准的纯文本格式的文件,其文件扩展名为.m。MATLAB提供了meditor编辑器编辑M文件注意:(1)不可用汉字命名(若用汉字命名虽然可以打开M文件,但是编译运行时会出错);(2)文件名不可与MATLAB内置函数重名;(3)文件名不可以以数字命名。,主程序文件(脚本文件),相当于C语言的主函数主程序文件没有输入参数和输出参数。执行主程序文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。主程序文件主要由注释行和代码行组成:M文件的注释行需要使用%,定义符注释定义符仅能影响一行代码程序执行的结果将显示于命令窗中,函数文件(相当于C语言的子函数),函数文件供主程序文件调用,必须指定函数名和输入输出参数,并由主程序文件中语句序列给出一系列操作,从而生成所需数据函数文件格式一般包括以下部分:(1)函数定义行:表明该m文件包含一个函数,且为其定义函数名、输入参数和输出参数functiony=mean(x)(2)帮助信息:处在文件中的第二行,应该反映该m文件概括性信息%求平均值,functiony=mean(x)%求平均值(3)函数体:函数所用计算过程和输入输出参数赋值的MATLAB代码;这里可以为调用函数、流程控制、交互式输入输出、计算、赋值等。m,n=size(x);ifm=1y=sum(x)/n;elsey=sum(x)/m;%把每一列做平均值运算end,函数文件例1:求均值,主程序文件调用y=mean(x)的方法,clear;A=1,2;3,4B=mean(A)helpmean则在命令窗显示mean函数注释的帮助信息,函数文件例2:比较两个数大小,functionnummax(a,b)if(abfprintf(thelargenumberis%f,a);elseifaA=123;456A=123456a,s,r=ourstats(A)a=2.50003.50004.5000s=1.50001.50001.5000r=2a,s=ourstats(A)a=2.50003.50004.5000s=1.50001.50001.5000,输入输出参数(续),a=ourstats(A,0.1)a=2.50003.50004.5000,调用该函数时,将输出参数依次写在一个向量中,若输出参数的个数与函数定义的输出参数个数不一致时,将计算得到的前几个输出参数作为返回值,若输出参数的个数等于指定的输出参数个数时,计算结果依次赋值给不同的变量。,子函数应用例1functionavg,med=newstats(u)%主函数%NEWSTATS计算均值和中间值n=length(u);avg=mean(u,n);%调用子函数med=median(u,n);%调用子函数functiona=mean(v,n)%子函数%计算平均值a=sum(v)/n;functionm=median(v,n)%子函数%计算中间值w=sort(v);%从小到大排序ifrem(n,2)=1m=w(n+1)/2);elsem=(w(n/2)+w(n/2+1)/2;end,在函数文件中可以包含多个函数,其中第一个函数称为主函数,其函数名与文件名相同,在M函数文件中的其他函数称为子函数,它只能由这一函数文件中的主函数或其他子函数引用,子函数:相当于C语言中函数的递归调用,局部变量:在M函数内部声明并使用的变量只在本函数范围内有效仅能在函数调用执行期间被使用,一旦函数结束运行,则变量占用的内存空间自动释放,变量的数值也不存在了局部变量的例子functionlocal%LOCAL察看局部变量的例子x=rand(2,2);y=zeros(2,2);z=函数中的变量;u=x,y,z;disp(z)whos,局部变量和全局变量,运行局部变量的例子local函数中的变量NameSizeBytesClassu1x3256cellarrayx2x232doublearrayy2x232doublearrayz1x612chararrayGrandtotalis31elementsusing332byteswhos,全局变量:在函数之外定义的变量可以为本文件中其他函数所共用MATLAB将全局变量保存在特殊的工作空间进行统一维护、管理将变量声明为全局变量的方法在使用变量前,用关键字global声明例:声明全局变量XYglobalXYwhosNameSizeBytesClassXY0 x00doublearray(global)Grandtotalis0elementsusing0bytes,局部变量和全局变量,使用global关键字创建全局变量时有三种情况(1)若声明为全局的变量在当前空间和全局空间都不存在,则创建一个新的变量,然后为这个变量赋值为空数组,该变量同时存在于局部工作空间和全局工作空间(2)若声明为全局的变量已经存在与全局空间中,则不会在全局工作空间创建新的变量,其数值同时赋值给局部工作空间中的变量(3)若声明为全局的变量存在于局部工作空间中,而全局工作空间不存在,则系统会提示一个警告信息,同时将局部的变量“挪”到全局工作空间中,局部变量和全局变量,全局变量和局部变量实例,函数文件:functiony=add3(x)globalcd;%切记:声明两个或两个以上全局变量时,变量之间用空格隔开,不可用逗号隔开y=x+3;c=x;d=y;,主程序文件:clear;globalcd;c=0;d=0;a=5;b=add3(a);c=c+1d=d+1,这类变量在MATLAB中被声明为persistent这类变量在函数退出时不被释放,当函数再一次被调用时,变量保留上次退出时的值保留变量的特征(1)变量仅能在声明变量的函数内使用,其他函数不能直接使用保留变量(2)函数执行退出后,MATLAB不清除保留变量占用的内存(3)当函数被清除或者重新编辑后,保留的变量被清除,保留变量,functiony=persistent_example(x)%PERSISTENT_EXAMPLE保留变量使用示例fori=1:xy=myfun;endfunctiony=myfun%子函数%persistent关键字的使用persistentcount;%count记录函数调用的次数if(isempty(count)count=1;elsecount=count+1;endstr=sprintf(第%d次调用该函数,count);disp(str);y=count;,保留变量实例,persistent_example(1)第1次调用该函数ans=1persistent_example(3)第2次调用该函数第3次调用该函数第4次调用该函数ans=4,保留变量,在MATLAB命令行中键入指令:clearall则所有的变量都会被清除persistent_example(3)第1次调用该函数第2次调用该函数第3次调用该函数ans=3,M文件调试,M文件的调试可以在文件编辑器中进行M语言的文件编辑器不仅仅是一个文件编辑器,还是一个可视化的调试开发环境可以在命令行中结合具体的命令进行,M文件调试,应用程序的错误语法错误包括词法或者文法的错误运行时的错误指程序运行过程中得到的结果不是用户需要的结果程序的调试是在程序无法得到正确结果时进行程序修正的唯一手段M文件是一种解释型语言,只有在运行过程中才能发现应用程序的错误,M文件调试,M语言文件编辑器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论