如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
M文件及程序调试(1)指令驱动模式即在MATLABM命令行窗口下用户输入单行指令时,MATLAB立即处理这条指令,并显示结果,这就是MATLAB命令行方式。缺点:命令行方式程序可读性差,而且不能存储,当处理复杂问题和大量数据时很不方便。(2)M文件模式将MATLAB语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。M语言文件可以分为主程序文件和函数文件一个M语言文件就是由若干MATLAB的命令组合在一起构成的。M语言文件是标准的纯文本格式的文件,其文件扩展名为.m。MATLAB提供了meditor编辑器编辑M文件注意:(1)不可用汉字命名(若用汉字命名虽然可以打开M文件,但是编译运行时会出错);(2)文件名不可与MATLAB内置函数重名;(3)文件名不可以以数字命名。主程序文件(脚本文件)函数文件(相当于C语言的子函数)functiony=mean(x)%求平均值(3)函数体:函数所用计算过程和输入输出参数赋值的MATLAB代码;这里可以为调用函数、流程控制、交互式输入输出、计算、赋值等。[m,n]=size(x);ifm==1y=sum(x)/n;elsey=sum(x)/m;%把每一列做平均值运算end主程序文件调用y=mean(x)的方法函数文件例2:比较两个数大小大家有疑问的,可以询问和交流function[avg,stdev,r]=ourstats(x)%ourstats多输入输出参数示例%该函数计算处理矩阵,得到相应的均值、标准差和矩阵的秩[m,n]=size(x);ifm==1m=n;end%Averageavg=sum(x)/m;%Sandaddeviationstdev=sqrt(sum(x.^2)/m-avg.^2);%Rankr=rank(x);运行例4-15>>A=[123;456]A=123456>>[a,s,r]=ourstats(A)a=2.50003.50004.5000s=1.50001.50001.5000r=2>>[a,s]=ourstats(A)a=2.50003.50004.5000s=1.50001.50001.5000子函数应用例1function[avg,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函数内部声明并使用的变量只在本函数范围内有效仅能在函数调用执行期间被使用,一旦函数结束运行,则变量占用的内存空间自动释放,变量的数值也不存在了局部变量的例子functionlocal%LOCAL察看局部变量的例子x=rand(2,2);y=zeros(2,2);z='函数中的变量';u={x,y,z};disp(z)whos全局变量:在函数之外定义的变量可以为本文件中其他函数所共用MATLAB将全局变量保存在特殊的工作空间进行统一维护、管理将变量声明为全局变量的方法在使用变量前,用关键字global声明例:声明全局变量XY>>globalXY>>whosNameSizeBytesClassXY0x00doublearray(global)Grandtotalis0elementsusing0bytes使用global关键字创建全局变量时有三种情况(1)若声明为全局的变量在当前空间和全局空间都不存在,则创建一个新的变量,然后为这个变量赋值为空数组,该变量同时存在于局部工作空间和全局工作空间(2)若声明为全局的变量已经存在与全局空间中,则不会在全局工作空间创建新的变量,其数值同时赋值给局部工作空间中的变量(3)若声明为全局的变量存在于局部工作空间中,而全局工作空间不存在,则系统会提示一个警告信息,同时将局部的变量“挪”到全局工作空间中全局变量和局部变量实例这类变量在MATLAB中被声明为persistent这类变量在函数退出时不被释放,当函数再一次被调用时,变量保留上次退出时的值保留变量的特征(1)变量仅能在声明变量的函数内使用,其他函数不能直接使用保留变量(2)函数执行退出后,MATLAB不清除保留变量占用的内存