MATLAB第五讲MATLAB程序语言设计1246.ppt
《MATLAB第五讲MATLAB程序语言设计1246.ppt》由会员分享,可在线阅读,更多相关《MATLAB第五讲MATLAB程序语言设计1246.ppt(74页珍藏版)》请在三一办公上搜索。
1、MATLAB程序语言设计,翟懿奎五邑大学信息学院2012年,第五讲 MATLAB 语言程序设计,5.1 MATLAB语言的函数的基本结构5.2 MATLAB语言的程序流程语句5.3 全局、局部变量、子函数与私有目录5.4 MATLAB 函数的跟踪调试5.5 MATLAB工具箱编写技巧5.6 MATLAB中新的数据结构5.7 MATLAB 语言编程技巧5.8 上机练习,5.1 MATLAB 语言函数的基本结构,MATLAB语言提供了两种源程序文件格式,M脚本文件:它实际上是MATLAB命令窗中一系列命令的组合,它没有输入输出参数传递的过程,它直接对工作区中的变量进行处理操作。,M函数:这是MAT
2、LAB程序设计的主流,它可以传递参数及返回结果,我们主要介绍M函数的编写方法与技巧。,M脚本文件:,MATLAB允许使用比“标称数目”较少的输入输出变量,实现对函数的调用。函数空间随具体M函数文件的被调用而产生,随调用结束而删除。函数空间是相对独立的、临时的。在MATLAB整个运行期间,可以产生任意多个临时函数空间。假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。,M文件的建立与编辑,1.建立新的M文件(1)菜单操作:MATLAB命令窗口的File菜单 New菜单项 M-file命令。(2)命令操作:在MATLAB命令窗口
3、输入命令edit。(3)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”命令按钮。2.编辑已有的M文件,例:建立一个命令文件将变量a,b的值互换,然后运行该命令文件。首先建立命令文件并以文件名exch.m存盘:clear;a=1:10;b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。,例:建立fibonnaci.m文件,其内容如下:%计算Fibonnaci数clear;f(1)=1;f(2)=1;for n=1:1:8 f(n+2)=f(n)+f(n+1);endf,5.1 MATLAB
4、 语言函数的基本结构,M函数是由 function 语句引导的,其基本格式如下,function 返回变量列表函数名(输入变量列表)由该符号引导的注释语句段,在MATLAB命令窗中用命令 help 函数名 所得到的帮助就是这段文字。输入、返回变量格式的检测函数体语句,只要进入该函数,MATLAB就自动生成 nargin 和 nargout 两个变量,分别表示输入变量和输出变量的个数。程序中可以根据这两个变量的值来判断用户输入参数的情况。,5.1 MATLAB 语言函数的基本结构,M函数典型例子,function magout,phase,w=bode(a,b,c,d,iu,w)%BODE Bo
5、de frequency response of LTI models.%BODE(SYS)draws the Bode plot of the LTI model SYS(created with%either TF,ZPK,SS,or FRD).The frequency range and number of%points are chosen automatically.%See also BODEMAG,NICHOLS,NYQUIST,SIGMAni=nargin;no=nargout;.%end bode,5.1 MATLAB 语言函数的基本结构,说明,注释符号引导的内容不能含空行
6、,否则,后续的内容不能由 help 命令看到,大部分作者及版权信息都是空行后的注释内容。,当返回变量只有一个时,不用方框号括起来。,函数名与该函数存盘用的文件名要一样,否则MATLAB寻找的是文件名符合的函数,而且老版本的MATLAB不能用超过8个字符的函数名。,5.1 MATLAB 语言函数的基本结构,说明(续),可以用 type 函数名 来看函数文件的内容。,可以用 edit 函数名 来查看或编辑函数文件。,为了使得MATLAB认识该函数,要将该函数所在的目录用cd 命令设为当前目录,或用命令addpath添加到MATLAB的路径中去(也可以用MATLAB菜单下的PATH命令)。,例:建立
7、fibonnaci.m文件,其内容如下:%计算Fibonnaci数clear;f(1)=1;f(2)=1;for n=1:1:8 f(n+2)=f(n)+f(n+1);endf,例:把前例计算fibonnaci数的脚本文件改成函数文件如下:function f=fibo(N)%FIBO;计算参数N个Fibonnaci数的函数文件%f=fibo(N);N可取任意自然数%.%编写于.f(1)=1;%初始化1f(2)=1;%初始化2for n=1:N f(n+2)=f(n)+f(n+1);end;,例子:建立一个命令文件将变量a,b的值互换,然后运行该命令文件。首先建立命令文件并以文件名exch.m
8、存盘:clear;a=1:10;b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。,例子:交换a与b的取值;function a,b=swap(a,b)%The function swap receives two values,swaps them,%and returns the result.The syntax for the call is%a,b=swap(a,b)where the a and b in the()are the%values sent to the function
9、 and the a and b in the are%returned values which are assigned to corresponding%variables in your program.temp=a;a=b;b=temp;,x=5;y=6;x,y=swap(x,y)help swap%displays:,例子:求k的阶乘function n=factorial(k)%The function n=factorial(k)calculates and%returns the value of k factorial.If k is negative,%an error
10、message is returned.if(k 0)n=Error,negative argument;elseif k2 n=1;else n=1;for j=2:k n=n*j;endend,函数所传递参数的可调性 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,nargin用法示例。函数文件examp.m:function fout=charray(a,b,c)if nargin=1 fout=a;else
11、if nargin=2 fout=a+b;elseif nargin=3 fout=(a*b*c)/2;end 命令文件mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3),数据的输入输出,input函数 调用格式为:A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入什么样的数据。如果在input函数调用时采用s选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:xm=input(Whats your name?,s),disp函数 调用格式为 disp(输出项)其中输出项既可以为字符串,也可以为
12、矩阵。注意:用disp函数显示矩阵时将不显示矩阵的名字,而且其格式更紧密,且不留任何没有意义的空行。,求一元二次方程ax2+bx+c=0的根。程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);,pause函数 其调用格式为:pause(延迟秒数)如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运行可使用Ctrl+C命令。,1.i
13、f语句 在MATLAB中,if语句有3种格式。1.单分支if语句 语句格式为:if 条件 语句组 end 当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。,5.2 MATLAB语言的程序流程语句,选择语句,2.双分支if语句 语句格式为:if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。,5.2 MATLAB语言的程序流程语句,计算分段函数值。程序如下:x=input(请输入x的值:);if x=10 y=cos(x+1)+sqrt(x
14、*x+1);else y=x*sqrt(x+sqrt(x);end y,5.2 MATLAB语言的程序流程语句,3.多分支if语句语句格式为:if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组m+1end,5.2 MATLAB语言的程序流程语句,例子:输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。程序如下:c=input(请输入一个字符,s);if c=A end,switch语句 其语句格式为:switch 表达式 case 表达式1 语句组1 cas
15、e 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组m+1 end,5.2 MATLAB语言的程序流程语句,例:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣输入所售商品的价格,求其实际销售价格。,5.2 MATLAB语言的程序流程语句,程序如下:price=input(请输入商品价格);switch fix(price/100)c
16、ase 0,1%价格小于200 rate=0;case 2,3,4%价格大于等于200但小于500 rate=3/100;case num2cell(5:9)%价格大于等于500但小于1000 rate=5/100;case num2cell(10:24)%价格大于等于1000但小于2500 rate=8/100;case num2cell(25:49)%价格大于等于2500但小于5000 rate=10/100;otherwise%价格大于等于5000 rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格,try语句语句格式为:try 语句组1catc
17、h 语句组2end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种试探性执行语句是其他高级语言所没有的。,5.2 MATLAB语言的程序流程语句,矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。程序如下:A=1,2,3;4,5,6;B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr%显示出错原因,循环结构,for语句 语句格式为:for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 首先计算三个
18、表达式的值,再将表达式1的值赋给循环变量,如果此时循环变量的值介于表达式1和表达式3的值之间,则执行循环体语句,否则结束循环的执行。执行完一次循环之后,循环变量自增一个表达式2的值,然后再判断循环变量的值是否介于表达式1和表达式3之间,如果满足仍然执行循环体,直至不满足为止。这时将结束for语句的执行,而继续执行for语句后面的语句。,5.2 MATLAB语言的程序流程语句,例:一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。程序如下:for m=100:999m1=fix(m/100);%求m的百位数字m2=rem(fix(m/10),10);%求m的十位数字m
19、3=rem(m,10);%求m的个位数字if m=m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend,例:已知求表达式y=1+1/(22)+1/(32)+,当n=100时,求y的值。程序如下:y=0;n=100;for i=1:n y=y+1/i/i;end y 在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作:n=100;i=1:n;f=1./i.2;y=sum(f),for语句更一般的格式:for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。实际上,“表
20、达式1:表达式2:表达式3”是一个仅为一行的矩阵(行向量),因而列向量是单个数据。,5.2 MATLAB语言的程序流程语句,例子:已知5个学生4门功课的成绩,求每名学生的总成绩。程序如下:s=0;a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87;for k=a s=s+k;enddisp(s);,while语句 while语句的一般格式为:while(条件)循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。,5.2 MATLAB语言的程序流程语句,例:从键盘输
21、入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。程序如下:sum=0;cnt=0;val=input(Enter a number(end in 0):);while(val=0)sum=sum+val;cnt=cnt+1;val=input(Enter a number(end in 0):);endif(cnt 0)sum mean=sum/cntend,5.2 MATLAB语言的程序流程语句,前例:已知求表达式y=1+1/(22)+1/(32)+,当n=100时,求y的值。,5.2 MATLAB语言的程序流程语句,与循环结构相关的还有一个break语句,当在循环体内执行到该语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB第五讲 MATLAB程序语言设计 1246 MATLAB 第五 程序语言 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2975145.html