《matlab帮助文档3.ppt》由会员分享,可在线阅读,更多相关《matlab帮助文档3.ppt(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第三讲第三讲 MatLab程序设计程序设计一、M文件 我们前面所介绍在我们前面所介绍在MATLAB所做的运算,是适合于所所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。样的方式就行不通了。MATLAB提供了所谓的提供了所谓的 M-file 的方式,可让使用者的方式,可让使用者自行将指令及算式写成聚集程序然后储存成一个特别的文自行将指令及算式写成聚集程序然后储存成一个特别的文档,其扩展名是档,其扩展名是m
2、,譬如,譬如 picture.m,其中的,其中的picture就就是文件名称。是文件名称。(1)编写)编写M脚本文件的步骤脚本文件的步骤 点击点击MATLAB指令窗工具条上的指令窗工具条上的New File图标图标 ,就,就可打开如图所示的可打开如图所示的MATLAB文件编辑调试器。用户即可文件编辑调试器。用户即可在空白窗口中编写程序。在空白窗口中编写程序。输入如下一段程序输入如下一段程序(picture.m)x=linspace(0,2*pi,20);y=sin(x);plot(x,y,r+)title(2D plot)点击编辑调试器工具条图标点击编辑调试器工具条图标,在弹出的,在弹出的Wi
3、ndows标准风格的标准风格的“保存为保存为”对对话框中,选择保存文件夹,键入新编文件名(如话框中,选择保存文件夹,键入新编文件名(如picture),点击),点击【保存保存】键,就完成了文件保存。键,就完成了文件保存。(2)运行文件)运行文件 使使picture.m所在目录成为当前所在目录成为当前目录目录(系统默认路径系统默认路径),或让该目录,或让该目录处在处在MATLAB的搜索路径上的搜索路径上.然后在指令窗口运行以下指令然后在指令窗口运行以下指令picture,便可得到图形。便可得到图形。二、M文件函数 一个函数一个函数M文件与脚本文件类似之处在于文件与脚本文件类似之处在于1.它们都是
4、一个有它们都是一个有.m 扩展名的文本文件。扩展名的文本文件。2.如同脚本如同脚本M文件一样,函数文件一样,函数M文件不进入命令窗口,而文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。是由文本编辑器所创建的外部文本文件。不同之处:不同之处:一个函数的一个函数的M文件与脚本文件在通信方面是不同的。文件与脚本文件在通信方面是不同的。函数与函数与MATLAB工作空间之间的通信,只通过传递给它的变量工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。和通过它所创建的输出变量。在函数内中间变量不出现在在函数内中间变量不出现在MATLAB工作空间。工作空间。一个函数的一个函数的M文
5、件的第一行把文件的第一行把M文件定义为一个函数,并指定它文件定义为一个函数,并指定它的名字。它与文件名相同,但没有的名字。它与文件名相同,但没有.m 扩展名。它也定义了它的输扩展名。它也定义了它的输入和输出变量。入和输出变量。例例:,计算计算f(1)f(2)+f2(3)首先建立一个首先建立一个M函数函数:fun1.mfunction Y=fun1(x)Y=(x3-2*x2+x-6.3)/(x2+0.05*x-3.14);fun1(1)*fun1(2)+fun1(3)2ans=-12.6023M文件函数之间可以互相调用文件函数之间可以互相调用.M文件函数必须遵循以下特定的规则。文件函数必须遵循以
6、下特定的规则。1.函数名和文件名必须相同。例如,函数函数名和文件名必须相同。例如,函数fun1 存储在名为存储在名为fun1.m 文件中。文件中。2.函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。3.函数可以按少于函数函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用文件中所规定的输入和输出变量进行调用,但不能用多于函数多于函数M文件中所规定的输入和输出变量数目。文件中所规定的输入和输出变量数目。4.当函数有一个以上输出变量时,输出变量包含在括号内。当函数有一个以上输出变量时,输出变量包含在括号内
7、。例如,例如,V,D=eig(A)。不要把这个句法与等号右边的不要把这个句法与等号右边的V,D 相混淆。右边的相混淆。右边的V,D 是由数组是由数组V和和D 所所组成。组成。三、Matlab控制流if-else-end分支结构分支结构很多情况下,命令的序列必须根据关系的检验有条件地执行。在很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种编程语言里,这种逻辑由某种if-else-end结构来提供。最简单结构来提供。最简单的的if-else-end结构是结构是 if 条件条件命令行命令行end 如果在表达式中的所有元素为真,那么就执行如果在表达式中的所有元素为真,
8、那么就执行if和和end语言之语言之间的命令行间的命令行【例例】一个简单的分支结构。一个简单的分支结构。t=10;number=12;if number8 s=number*0.95*t;end,s s=114.0000 假如有两个选择,假如有两个选择,If-Else-End结构是:结构是:if 条件条件 命令行命令行1 else 命令行命令行2 endif rand(1)0.5disp(I love you)elsedisp(I do not love you)end【例例】在这里,如果表达式为真,则执行第一组命令;如果表达式是在这里,如果表达式为真,则执行第一组命令;如果表达式是假,则执行
9、第二组命令。假,则执行第二组命令。当有三个或更多的选择时,当有三个或更多的选择时,If-Else-End结构采用形式结构采用形式 if 条件条件1 命令行命令行1 elseif 条件条件2 命令行命令行2 elseif 条件条件3 命令行命令行3 elseif 条件条件4 命令行命令行4 elseif else 命令行命令行n end1.for循环结构循环结构for循环允许一组命令以固定的和预定的次数重复。循环允许一组命令以固定的和预定的次数重复。for循环的一般形循环的一般形for x=array命令行命令行end在在for和和end语句之间的命令行按数组中的每一列执行一次。语句之间的命令行
10、按数组中的每一列执行一次。【例例】for n=1:10 x(n)=n2;end xx=1 4 9 16 25 36 49 64 81 100 for循环可按需要嵌套。循环可按需要嵌套。例:构造一个三行三列的矩阵例:构造一个三行三列的矩阵a,使使aij=i+jfor i=1:3 for j=1:3 a(i,j)=i+j;endend aa=2 3 4 3 4 5 4 5 6可以利用可以利用break命令跳出命令跳出for循环循环While循环结构循环结构与与for循环以固定次数求一组命令的值相反,循环以固定次数求一组命令的值相反,While 循环循环以不定的次数求一组语句的值。以不定的次数求一组
11、语句的值。While循环的一般形式是:循环的一般形式是:while 条件条件 命令行命令行 end例:建立一个含有六个元素的一维数组例:建立一个含有六个元素的一维数组x,使,使x的第的第i个元素等于个元素等于1/i1.用用for语句:语句:x=zeros(1,6);for i=1:6x(i)=1/i;end2.用用while语句:语句:x=zeros(1,6);i=1while i=6x(i)=1/i;i=i+1;end可以利用可以利用break命令跳出命令跳出while循环循环while循环可按需要嵌套。循环可按需要嵌套。【例例】Fibonacci数组的元素满足数组的元素满足Fibonacci 规则:规则:ak+2=ak+1+ak,(k=1,2,);且;且a1=a2=1。现要求该数组中。现要求该数组中第一个大于第一个大于10000的元素。的元素。a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i);%当现有的元素仍小于当现有的元素仍小于10000时,求解时,求解下一个元素。下一个元素。i=i+1;end;关系操作符关系操作符说明说明小于小于大于大于=大于或等于大于或等于=等于等于=不等于不等于逻辑操作符逻辑操作符说明说明&与与|或或非非