《2.程序设计.ppt》由会员分享,可在线阅读,更多相关《2.程序设计.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二讲 MATLAB程序设计 MATLAB有两种工作方式:交互式的命令行工作方式M文件的程序工作方式用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出参数。函数文件:可以输入参数,也可返回输出参数。一.M文件M文件的建立与编辑建立新的M文件:从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选择Open M-file命令。求最大值最小值function xmax,xmin=max1(a)x,y=size(a);xmax=a(1);xminx=a(1
2、);for i=1:1:y if a(i)xmax xmax=a(i);end if a(i)A(3)&A(1)+A(3)A(2)&A(2)+A(3)A(1)p=(A(1)+A(2)+A(3)/2;s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3);disp(s);else disp(不能构成一个三角形。)end运行:请输入三角形的三条边:4 5 6 9.9216三程序设计(一一)选择结构选择结构【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。c=input(,s);if c=A&c=a&c=z disp(setstr
3、(abs(c)-1);前导字符 else disp(c);end三程序设计(一一)选择结构选择结构2 switch语句语句switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为:switch 表达式 case 值1 语句组1 case 值2 语句组2 case 值m 语句组m otherwise 语句组m+1 end三程序设计(一一)选择结构选择结构【例6】根据变量 num 的值来决定显示的内容。num=input(请输入一个数);switch num case-1 disp(I am a teacher.);case 0 disp(I am a student.);case
4、 1 disp(You are a teacher.);otherwise disp(You are a student.);end三程序设计(一一)选择结构选择结构(二)循环结构(二)循环结构实现循环结构的语句:for语句和while语句。1 for语句:格式:for 循环变量=表达式1:表达式2:表达式3 循环体语句 end注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。三程序设计求和 Sum=0For i=1:1:100 sum=sum+iend sum例:老张决定每天储蓄,第一天存1元,第二天存2元,第三天存4元,第
5、四天存8元如此类推下去,直到满一个月(31天)为止,问按此方案老张总共应存多少钱?sum=0;x=1;for i=2:1:31 x=x*2;sum=sum+x;endx sum2 while语句语句格式为:while(条件)循环体语句 end三程序设计(二二)循环结构循环结构例题:计算100!3 循环的嵌套循环的嵌套如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。三程序设计(二二)循环结构循环结构【例8】求100,1000以内的全
6、部素数。n=0;for m=100:1000 flag=1;j=m-1;i=2;while i=j&flag if rem(m,i)=0(rem为求余)flag=0;end i=i+1;end if flag n=n+1;prime(n)=m;end end prime%变量prime存放素数三程序设计(二二)循环结构循环结构四函数文件函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。四.函数文件1函数文件格式函数文件格式函数文件由function语句引导,其格式为:function 输出形参表=函数名(输入形参表)注释说
7、明部分 函数体注:其中函数名的命命名名规规则则与与变变量量名名相相同同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。【例9】编写函数文件求小于任意自然数n的Fibonacci数列各项。function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年9月30日编 f=1,1;i=1;while f(i)+f(i+1)n f(i+2)=f(i)+f(i+1);i=i+1;end将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2 000的Fibonacci数。ffi
8、b(2000)四.函数文件2函数调用函数调用 函数文件编制好后,就可调用函数进行计算了。如上面定义ffib函数后,调用它求小于2000的Fibonacci数。函数调用的一般格式是:输出实参表=函数名(输入实参表)四.函数文件五全局变量和局部变量 在MATLAB中,全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程有效。所有的函数都可以对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种手段。四.函数文
9、件【例13】全局变量应用示例先建立函数文件wadd.m,该函数将输入的参数加权相加。function f=wadd(x,y)%add two variable global ALPHA BETA f=ALPHA*x+BETA*y;在命令窗口中输入:global ALPHA BETA ALPHA=1;BETA=2;s=wadd(3,6)输出为:s=15习 题1.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。2.求Fibonacci数列 (1)大于4000的最小项。(2)5000之内的项数。3.编制一个4阶矩阵,使其主对角线上元素都为0,与主对角线相邻元素都为1,其余元素都为2.a=zeros(5)for i=1:1:5 for j=1:1:5 If i=j a(i,j)=2 end a(i,j)=0 a(i+1,j)=1 a(i,j-1)=1 end endend 3.写出下列程序的输出结果:s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a for j=1:4 if rem(k(j),2)=0 s=s+k(j);end end end s