MatlabM文件详解.ppt

上传人:本田雅阁 文档编号:2146117 上传时间:2019-02-21 格式:PPT 页数:22 大小:143.01KB
返回 下载 相关 举报
MatlabM文件详解.ppt_第1页
第1页 / 共22页
MatlabM文件详解.ppt_第2页
第2页 / 共22页
MatlabM文件详解.ppt_第3页
第3页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MatlabM文件详解.ppt》由会员分享,可在线阅读,更多相关《MatlabM文件详解.ppt(22页珍藏版)》请在三一文库上搜索。

1、M文件及程序调试,本章详细讲解利用M语言进行编程的方法 讲述的主要内容: 主程序文件 函数文件 M文件的调试,(1)指令驱动模式 即在MATLABM命令行窗口下用户输入单行指令时, MATLAB立即处理这条指令,并显示结果,这就是MATLAB命令行方式。 缺点:命令行方式程序可读性差,而且不能存储,当处理复杂问题和大量数据时很不方便。 (2)M文件模式 将MATLAB语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。,MATLAB的工作模式,M语言文件可以分为主程序文件和函数文件 一个M语言文件就是由若干MATLAB的命令组合在一 起构成的。 M语言文

2、件是标准的纯文本格式的文件,其文件扩 展名为.m。 MATLAB提供了meditor编辑器编辑M文件 注意: (1)不可用汉字命名(若用汉字命名虽然可以打开M文件,但是编译运行时会出错); (2)文件名不可与MATLAB内置函数 重名; (3)文件名不可以以数字命名。,主程序文件(脚本文件),相当于C语言的主函数 主程序文件没有输入参数和输出参数。 执行主程序文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。 主程序文件主要由注释行和代码行组成: M文件的注释行需要使用%,定义符注释定义符仅能影响一行代码 程序执行的结果将显示于命令窗中,函数文件(相当于C语言的子函数),函数文件

3、供主程序文件调用,必须指定函数名和输入输出参数,并由主程序文件中语句序列给出一系列操作,从而生成所需数据 函数文件格式一般包括以下部分: (1)函数定义行:表明该m文件包含一个函数,且为其定义函数名、输入参数和输出参数 function y=mean(x) (2)帮助信息:处在文件中的第二行,应该反映该m文件概括性信息 %求平均值,function y=mean(x) %求平均值 (3)函数体:函数所用计算过程和输入输出参数赋值的MATLAB代码; 这里可以为调用函数、流程控制、交互式输入输出、计算、赋值等。 m,n=size(x); if m=1 y=sum(x)/n; else y=sum

4、(x)/m; %把每一列做平均值运算 end,函数文件例1:求均值,主程序文件调用y=mean(x)的方法,clear; A=1,2;3,4 B=mean(A) help mean 则在命令窗显示mean函数注释的帮助信息,函数文件例2:比较两个数大小,function nummax(a,b) if(ab fprintf(the large number is %f,a); elseif ab fprintf(the large number is %f,b); else fprintf(%f=%f,a,b); end,functionavg,stdev,r=ourstats(x) % our

5、stats多输入输出参数示例 % 该函数计算处理矩阵,得到相应的均值、标准差和矩阵的秩 m,n=size(x); if m=1 m=n; end % Average avg=sum(x)/m; % Sandad deviation stdev=sqrt(sum(x.2)/m-avg.2); % Rank r=rank(x);,函数文件例3:多个输入参数,运行例4-15 A=1 2 3;4 5 6 A = 1 2 3 4 5 6 a,s,r=ourstats(A) a = 2.5000 3.5000 4.5000 s = 1.5000 1.5000 1.5000 r = 2 a,s=oursta

6、ts(A) a = 2.5000 3.5000 4.5000 s = 1.5000 1.5000 1.5000,输入输出参数(续), a=ourstats(A,0.1) a = 2.5000 3.5000 4.5000,调用该函数时,将输出参数依次写在一个向量中, 若输出参数的个数与函数定义的输出参数个数不一致时,将计算得到的前几个输出参数作为返回值, 若输出参数的个数等于指定的输出参数个数时,计算结果依次赋值给不同的变量。,子函数应用例1 functionavg,med=newstats(u) % 主函数 % NEWSTATS计算均值和中间值 n=length(u); avg=mean(u,

7、n); % 调用子函数 med=median(u,n); % 调用子函数 function a=mean(v,n) % 子函数 % 计算平均值 a=sum(v)/n; function m=median(v,n) % 子函数 % 计算中间值 w=sort(v); %从小到大排序 if rem(n,2)=1 m=w(n+1)/2); else m=(w(n/2)+w(n/2+1)/2; end,在函数文件中可以包含多个函数,其中第一个函数称为主函数,其函数名与文件名相同,在M函数文件中的其他函数称为子函数,它只能由这一函数文件中的主函数或其他子函数引用,子函数:相当于C语言中函数的递归调用,局部

8、变量:在M函数内部声明并使用的变量 只在本函数范围内有效 仅能在函数调用执行期间被使用,一旦函数结束运行,则变量占用的内存空间自动释放,变量的数值也不存在了 局部变量的例子 function local % LOCAL察看局部变量的例子 x=rand(2,2); y=zeros(2,2); z=函数中的变量; u=x,y,z; disp(z) whos,局部变量和全局变量,运行局部变量的例子 local 函数中的变量 Name Size Bytes Class u 1x3 256 cell array x 2x2 32 double array y 2x2 32 double array z

9、1x6 12 char array Grand total is 31 elements using 332 bytes whos ,全局变量:在函数之外定义的变量 可以为本文件中其他函数所共用 MATLAB将全局变量保存在特殊的工作空间进行统一维护、管理 将变量声明为全局变量的方法 在使用变量前,用关键字global声明 例:声明全局变量XY global XY whos Name Size Bytes Class XY 0x0 0 double array (global) Grand total is 0 elements using 0 bytes,局部变量和全局变量,使用global

10、关键字创建全局变量时有三种情况 (1)若声明为全局的变量在当前空间和全局空间都不存在,则创建一个新的变量,然后为这个变量赋值为空数组,该变量同时存在于局部工作空间和全局工作空间 (2)若声明为全局的变量已经存在与全局空间中,则不会在全局工作空间创建新的变量,其数值同时赋值给局部工作空间中的变量 (3)若声明为全局的变量存在于局部工作空间中,而全局工作空间不存在,则系统会提示一个警告信息,同时将局部的变量“挪”到全局工作空间中,局部变量和全局变量,全局变量和局部变量实例,函数文件: function y=add3(x) global c d; %切记:声明两个或两个以上全局变量时, 变量之间用空

11、格隔开,不可用逗号隔开 y=x+3; c=x; d=y;,主程序文件: clear; global c d; c=0; d=0; a=5; b=add3(a); c=c+1 d=d+1,这类变量在MATLAB中被声明为persistent 这类变量在函数退出时不被释放,当函数再一次被调用时,变量保留上次退出时的值 保留变量的特征 (1)变量仅能在声明变量的函数内使用,其他函数不能直接使用保留变量 (2)函数执行退出后,MATLAB不清除保留变量占用的内存 (3)当函数被清除或者重新编辑后,保留的变量被清除,保留变量,function y=persistent_example(x) % PERS

12、ISTENT_EXAMPLE 保留变量使用示例 for i=1:x y=myfun; end function y=myfun % 子函数 % persistent关键字的使用 persistent count; % count记录函数调用的次数 if (isempty(count) count=1; else count=count+1; end str=sprintf(第%d次调用该函数,count); disp(str); y=count;,保留变量实例, persistent_example(1) 第1次调用该函数 ans = 1 persistent_example(3) 第2次调用

13、该函数 第3次调用该函数 第4次调用该函数 ans = 4,保留变量,在MATLAB命令行中键入指令: clear all 则所有的变量都会被清除 persistent_example(3) 第1次调用该函数 第2次调用该函数 第3次调用该函数 ans = 3,M文件调试,M文件的调试 可以在文件编辑器中进行 M语言的文件编辑器不仅仅是一个文件编辑器,还是一个可视化的调试开发环境 可以在命令行中结合具体的命令进行,M文件调试,应用程序的错误 语法错误 包括词法或者文法的错误 运行时的错误 指程序运行过程中得到的结果不是用户需要的结果 程序的调试是在程序无法得到正确结果时进行程序修正的唯一手段 M文件是一种解释型语言,只有在运行过程中才能发现应用程序的错误,M文件调试,M语言文件编辑器提供Breakpoints菜单进行程序调试,M文件调试,Breakpoints菜单中的命令用来设置各种断点,只有设置了断点的应用程序才能进行调试 提供的自动断点 Stop if Error Stop if Warning Stop if NaN or Inf Stop if All Errors 自动断点可以在程序中设置,当程序运行过程中发生了错误或警告,则程序运行中断,进如调试状态,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1