MATLAB编程与工程应用-第4章-MATLAB程序设计_第1页
MATLAB编程与工程应用-第4章-MATLAB程序设计_第2页
MATLAB编程与工程应用-第4章-MATLAB程序设计_第3页
MATLAB编程与工程应用-第4章-MATLAB程序设计_第4页
MATLAB编程与工程应用-第4章-MATLAB程序设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB编程与工程应用教师 :曾晓东电话 _mail :zengxiaodong@263.netQQ :241747139MATLAB编程与工程应用3章MATLAB程序设计第4章MATLAB程序设计4.1M文件4.2程序控制结构4.3函数文件4.4程序举例4.5程序调试3章MATLAB程序设计4.1M文件一、M文件概述用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(ScriptFile)函数文件(FunctionFile)。二、M文件的建立和打开M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。3章MATLAB程序设计4.1M文件1.建立新的M文件

(1)菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB文本编辑器窗口。

(2)命令操作。在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘。

(3)命令按钮操作。单击MATLAB主窗口工具栏上的NewM-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。3章MATLAB程序设计4.1M文件2.打开已有的M文件

(1)菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。

(2)命令操作。在MATLAB命令窗口输入命令:edit文件名,则打开指定的M文件。

(3)命令按钮操作。单击MATLAB主窗口工具栏上的OpenFile命令按钮,再从弹出的对话框中选择所需打开的M文件。3章MATLAB程序设计4.2程序控制结构一、顺序结构1.input函数

A=input(提示信息,选项);注:’s’选项,则允许用户输入一个字符串。例如想输入一个人的姓名,可采用命令

xm=input('What''syourname:','s')【例4.1】求一元二次方程a2+bx+c=0的根。(exp3_1.m)

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)]3章MATLAB程序设计一、顺序结构2.disp函数

disp(输出项)输出项为字符串或矩阵例

A=‘Hello,MATLAB';

disp(A)输出为:

Hello,MATLAB3章MATLAB程序设计4.2程序控制结构二、选择结构1.if,else,elseif语句1)if(逻辑表达式)

执行语句

end2)if(逻辑表达式)

执行语句1 else

执行语句2 end3)if(逻辑表达式1)

执行语句1

elseif(逻辑表达式2)

执行语句2…else

执行语句nend3章MATLAB程序设计二、选择结构【例4.2】:输入三角形的三条边,求面积。(exp3_2.m)A=input('请输入三角形的三条边:');if(A(1)+A(2)>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运行:请输入三角形的三条边:[456]9.92163章MATLAB程序设计二、选择结构【例4.3】:输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。(exp3_3.m)c=input(‘请输入字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+1));elseifc>='a'&c<='z'disp(setstr(abs(c)-1));else

disp(c);end3章MATLAB程序设计二、选择结构2.switch语句格式:switch(表达式)%表达式可以是标量或字符串

case值1

语句1 case值2

语句2 … otherwise

语句nend执行方式:表达式的值和哪种情况(case)的值相同,就执行哪种情况中的语句,如果不同,则执行otherwise中的语句。格式中也可以不包括otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。3章MATLAB程序设计二、选择结构【例4.4】根据变量num的值来决定显示的内容。(exp3_4.m)num=input('请输入一个数');switch(num) case-1

disp('Iamateacher.'); case0

disp('Iamastudent.'); case1

disp('Youareateacher.'); otherwise

disp('Youareastudent.');end3章MATLAB程序设计二、选择结构3.try语句格式:

try

语句组1 catch

语句组2 endtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。3章MATLAB程序设计二、选择结构【例4.5】矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。(exp3_5.m)程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%显示出错原因3章MATLAB程序设计4.2程序控制结构三、循环语句1.for语句(1)for循环变量=表达式1:表达式3:表达式2

循环语句组

End(2)for循环变量=数组范围 循环语句组

end步长缺省值为1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套使用。书写格式不必太过于拘泥,在Editor编辑器中会自动进行处理。3章MATLAB程序设计三、循环语句注意:1)for循环不能用for循环内重新赋值循环变量n来终止forn=1:10 x(n)=sin(n*pi/10); n=10;end2)语句1:10是标准的MATLAB数组创建语句,在FOR循环内接受任何有效的MATLAB数组。data=[39456;716–15];forn=datax=n(1)-n(2)end

3章MATLAB程序设计三、循环语句3)for循环可按需要嵌套forn=1:5form=5:-1:1 S(n,m)=n^2+m^2;end

disp(n)endS=25101726581320291013182534172025324126293441504)当有一个等效的数组来解给定的问题时,应避免用FOR循环,例如,上面的注意1中的例子可重写为n=1:10;x=sin(n*pi/10);5)为了得到最大的速度,在for循环(while循环)被执行之前,应预先分配数组。如在注意3中,应在循环前执行S=zeros(5);

3章MATLAB程序设计三、循环语句2、while循环语句

while(表达式)

循环体

end若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。3章MATLAB程序设计三、循环语句【例3.6】:计算下式的值(exp3_6_1.m,exp3_6_2.m)(1)使用for循环sum=0;forI=1:1000 sum=sum+I^2+2*I;end(2)使用while循环sum=0;I=1;while(I<=1000) sum=sum+I^2+2*I; I=I+1;end3章MATLAB程序设计4.2程序控制结构四、程序流控制1.break命令作用是中断循环语句的执行。中断的循环语句可以是for语句,也可以是while语句。当满足在循环体内设置的条件时,可以通过使用break命令使之强行退出循环,而不是达到循环终止条件时再退出循环。显然,循环体内设置的条件必须在break之前。对于嵌套的循环结构,break只能退出包含它的最内层循环。3章MATLAB程序设计四、程序流控制【例3.7】:求满足的n的最小值。(exp3_7_1.m,exp3_7_2.m)sum=0;forn=1:1000 sum=sum+n^2+2*n; if(sum>1000) break; endenddisplay(n)sum=0;n=0;while(sum<=1000) n=n+1; sum=sum+n^2+2*n;enddisplay(n)3章MATLAB程序设计四、程序流控制2.continue语句跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。3.return()函数作用是中断函数的执行,返回上级调用函数。return()函数指令既可以用在循环体内,也可用在非循环体内。4.pause()函数暂停指令。运行程序时,到pause()函数指令执行后,程序将暂停,等待用户敲任一键后继续执行。pause(n)暂停几秒后程序继续执行若要强行中止程序的运行可使用Ctrl+C命令。3章MATLAB程序设计4.3函数文件一、函数文件的基本结构函数文件由function语句引导,其基本结构为:

function输出形参表=函数名(输入形参表)

注释说明部分 函数体语句其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。函数名必须与文件名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。3章MATLAB程序设计一、函数文件的基本结构【例3.8】:编写函数文件求半径为r的圆的面积和周长。(fcircle.m)function[s,p]=fcircle(r)%fcircle

半径为r的圆的面积和周长%r圆半径%s圆面积%p圆周长%编制时间:2007年8月30日s=pi*r*r;p=2*pi*r;3章MATLAB程序设计4.3函数文件二、函数调用函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递归调用。3章MATLAB程序设计二、函数调用【例3.9】:利用函数的递归调用,求n!。n!本身就是以递归的形式定义的:n!=n*(n-1)!显然,求n!需要求(n-1)!,这时可采用递归调用(factor.m)functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%递归调用求(n-1)!end3章MATLAB程序设计4.3函数文件三、函数参数的可调性在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。【例4.10】:nargin示例命令文件:exp3_10.m函数文件:mydemo.m3章MATLAB程序设计4.3函数文件四、全局变量与局部变量全局变量用global命令定义,格式为:

global变量名【例4.11】:全局变量应用示例。(exp3_11.m)函数文件:wadd.m在命令窗口中输入:globalALPHABETAALPHA=1;BETA=2;s=wadd(1,2)3章MATLAB程序设计4.4程序举例【例4.12】:猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“太大了”,小于则显示“太小了”,等于则显示“你赢了”,同时退出游戏。用户最多可以猜7次。exp3_12.m3章MATLAB程序设计4.4程序举例【例4.13】:用筛选法求某自然数范围内的全部素数。素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出2——m之间的全部素数,首先在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论