预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MatLab&数学建模 授课:唐静波(九江学院理学院) 第三讲MatLab程序设计 M文件 我们前面所介绍在MATLAB所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。MATLAB提供了所谓的M-file的方式,可让使用者自行将指令及算式写成巨集程式然后储存成一个特别的文档,其扩展名是m,譬如picture.m,其中的picture就是文件名称。 (1)编写M脚本文件的步骤 点击MATLAB指令窗工具条上的NewFile图标,就可打开如图所示的MATLAB文件编辑调试器。用户即可在空白窗口中编写程序。 输入如下一段程序(picture.m) x=linspace(0,2*pi,20); y=sin(x); plot(x,y,'r+') title('2Dplot') 点击编辑调试器工具条图标,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如picture),点击【保存】键,就完成了文件保存。 (2)运行文件 使picture.m所在目录成为当前目录(系统默认路径),或让该目录处在MATLAB的搜索路径上. 然后在指令窗口运行以下指令,便可得到图形。 picture 再来看另一个M-file:area.m的例子 %新建M-file,area.m %计算一个球的体积 r=input('Typeradius输入半径:'); Area=pi*r^2; volume=(4/3)*pi*r^3; fprintf('半径Theradiusis%12.5f\n',r) fprintf('面积Theareaofacircleis%12.5f\n',Area) fprintf('体积Thevolumeofasphereis%12.5f\n',volume) 在指令窗口运行指令area M文件函数 一个函数M文件与脚本文件类似之处在于它们都是一个有.m扩展名的文本文件。如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m扩展名。它也定义了它的输入和输出变量。 M文件函数之间可以互相调用. M文件函数必须遵循以下特定的规则。 1.函数名和文件名必须相同。例如,函数fliplr存储在名为fliplr.m文件中。 2.MATLAB头一次执行一个M文件函数时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。 3.在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如,»helpfliplr返回上述前八行注释。 4.第一行帮助行,名为H1行,是由lookfor命令搜索的行。 5.函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。 6.函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function语句一开始所规定的数目,则调用时自动返回一个错误。 7.当函数有一个以上输出变量时,输出变量包含在括号内。例如,[V,D]=eig(A)。不要把这个句法与等号右边的[V,D]相混淆。右边的[V,D]是由数组V和D所组成。 8.当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin包含输入参量个数;函数工作空间变量nargout包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。 例:,计算f(1)f(2)+f2(3) 首先建立一个M函数:fun1.m functionY=fun1(x) Y=(x^3-2*x^2+x-6.3)/(x^2+0.05*x-3.14); 在指令窗口运行以下指令: fun1(1)*fun1(2)+fun1(3)*fun1(3) ans= -12.6023 例:计算阶层函数fact.m functionoutput=fact(n) ifn==1 output=1; return; end output=n*fact(n-1); 【例】M函数文件示例。 [circle.