第6章 MATLAB 程序设计

上传人:大米 文档编号:576508604 上传时间:2024-08-20 格式:PPT 页数:35 大小:218KB
返回 下载 相关 举报
第6章 MATLAB 程序设计_第1页
第1页 / 共35页
第6章 MATLAB 程序设计_第2页
第2页 / 共35页
第6章 MATLAB 程序设计_第3页
第3页 / 共35页
第6章 MATLAB 程序设计_第4页
第4页 / 共35页
第6章 MATLAB 程序设计_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《第6章 MATLAB 程序设计》由会员分享,可在线阅读,更多相关《第6章 MATLAB 程序设计(35页珍藏版)》请在金锄头文库上搜索。

1、第第6 6章章 MATLAB MATLAB 程序程序设计设计 一一. . 函数流程控函数流程控制制 顺序序结构构 判断判断语句(句(ifelseendifelseend) 分支分支语句句 循循环语句句 trycatchendtrycatchend语句句 其他流程控制函数其他流程控制函数 顺序序结构构 顺序序结构是最构是最简单的程序的程序结构,构,系系统在在编译程序程序时,按照程序,按照程序的物理位置的物理位置顺序序执行。行。这种程种程序容易序容易编制,但是制,但是结构构单一,一,能能够实现的功能有限。的功能有限。 判断判断语句句ifendifelseendifelseifelseendifen

2、d ifend 此此时时的程序的程序结结构如下:构如下:if if 表达式表达式 执执行代行代码块码块endend这这是最是最简单简单的判断的判断语语句,只有一个判断句,只有一个判断语语句,其句,其中的表达式中的表达式为逻辑为逻辑表达式,当表达式表达式,当表达式为为真真时时,执执行相行相应应的的语语句,否句,否则则,直接跳到下一段,直接跳到下一段语语句。句。 ifelseend ifelseend 当程序有两个当程序有两个选择时,可以,可以选择 ifelseend ifelseend 结构,构,此此时程序程序结构构为:if if 表达式表达式 执行代行代码块1 1elseelse 执行代行代码

3、块2 2endend当判断表达式当判断表达式为真真时,执行代行代码块1 1,否,否则执行代行代码块2 2。ifelseifelseend ifelseifelseend 上面的两种形式中,分上面的两种形式中,分别别包含一个包含一个选择选择和两个和两个选择选择,当判断包含多个当判断包含多个选择时选择时,可以采用,可以采用elseif elseif 语语句句。 结结构构为为:if if 表达式表达式1 1 执执行代行代码块码块1 1elseif elseif 表达式表达式2 2 执执行代行代码块码块2 2elseif elseif . .elseelse 执执行代行代码块码块endend其中其中可

4、以包含任意多个可以包含任意多个 elseif elseif 语语句句。 举例:编写程序实现函数 if x0 y=x+1 elseif x=0 y=x else y=x-1end 分支分支语句句 分支分支语语句的句的结结构构为为:switch switch 分支分支语语句句 case case 条件条件语语句句1 1 执执行代行代码块码块1 1 case case 条件条件语语句句2 2 执执行代行代码块码块2 2 case case . . . otherwise otherwise 执执行代行代码块码块 endend其中的分支其中的分支语句句为一个一个变量,可以是数量,可以是数值变量或者字符

5、串量或者字符串变量,如果量,如果该变量的量的值与与某一条件相符,某一条件相符,则执行相行相应的的语句,否句,否则,执行行 otherwise otherwise 后面的后面的语句。句。在每一个条件在每一个条件中,可以包含一个条件中,可以包含一个条件语句,可以包含多句,可以包含多个条件,当包含多个条件个条件,当包含多个条件时,将条件以,将条件以单元数元数组的形式表示。的形式表示。MATLAB MATLAB 的分支的分支语句句类似于似于 C C 语言的分支言的分支语句,但是又不完全相同:句,但是又不完全相同:MATLAB MATLAB 语句句从上到下依次判断条件,条件符合从上到下依次判断条件,条件

6、符合则执行行相相应的代的代码块,之后退出,之后退出该分支分支语句,因句,因此在代此在代码块后面不需要添加后面不需要添加“break”“break”语句。句。举例举例 switchswitch input_numinput_num casecase 1 1disp( 1 )disp( 1 ) casecase 2 , 3 , 4 2 , 3 , 4 disp( 2 or 3 or 4 )disp( 2 or 3 or 4 ) casecase 5 5 disp( 5 ) disp( 5 ) otherwise otherwise disp( something else )disp( somet

7、hing else ) endend循循环语句句 for for 语句句while while 语句句1 1for for 语句句for for 语句将相同的代句将相同的代码执行行预定定义的次数。的次数。for for 语句的句的结构构为:for for 循循环变量量 = = 表达式表达式 执行代行代码块 endend举例举例 计算计算 1+2+3+.+100 1+2+3+.+100 的和的和 for x=1:100 y=x+y ; endl举例:建立举例:建立1 1个个5*55*5的矩阵的矩阵 for m=1:5 for n=1:5 H(m,n)=m+n ; end end 注意此处的分号注

8、意此处的分号2 2while while 语句句while while 语句用于将相同的代句用于将相同的代码块执行多次,但是次行多次,但是次数并不数并不预先指定,当先指定,当 while while 的条件表达式的条件表达式为真真时,执行代行代码块,直到条件表达式,直到条件表达式为假。假。while while 语句的句的结构构为:while while 表达式表达式 执行代行代码块end end 举例 计算计算 1+2+3+.+100 1+2+3+.+100 的和的和sum=0;sum=0;i=1;i=1;whilewhile i=100 i=100 sum=i+sum ; sum=i+su

9、m ;i=i+1 ; i=i+1 ; endend trycatchendtrycatchend语句句trytry语语句句用来检测程序代码是否会产生错误,一旦错误发生,用来检测程序代码是否会产生错误,一旦错误发生,MatlabMatlab会会立即跳入到相应的立即跳入到相应的catchcatch语句中去,对错误做相应的处理。语句中去,对错误做相应的处理。trytry 运行代运行代码块码块1 1 % % 代码块代码块1 1被执行,若正确,跳出此结构被执行,若正确,跳出此结构catchcatch 运行代运行代码块码块2 2 % % 代码块代码块1 1出现执行错误,就执行代码块出现执行错误,就执行代码

10、块2 2endend举例举例 function matrixMultiply( A, B ) try x=A*B disp( 乘法正确乘法正确 ) catch disp( 乘法乘法错误 ) endinput 提示用户从键盘输入数值、字符串或表达式,并接收提示用户从键盘输入数值、字符串或表达式,并接收该输入。该输入。 user_entry=input( message )user_entry=input( message ) user_entry=input( message,s ) user_entry=input( message,s ) 指令运行后,将给出文字提示指令运行后,将给出文字提示

11、messagemessage,并等待键盘,并等待键盘输入。用户输入相应内容,并按回车键确认后,输入的内输入。用户输入相应内容,并按回车键确认后,输入的内容赋值给变量容赋值给变量user_entryuser_entry。其他流程控制函数其他流程控制函数 举例reply=input( 执行计算吗? Y/N , s ); if reply= y disp( 计算已执行 ) else disp( 计算过程终止 ) endkeyboard 在程序遇到在程序遇到keyboardkeyboard指令时,指令时,MatlabMatlab将会暂停程序的运行,并且将会暂停程序的运行,并且调用机器的键盘命令进行处理

12、。处理完毕后,调用机器的键盘命令进行处理。处理完毕后,输入输入returnreturn指令并回车指令并回车,程序继续运行。程序继续运行。 keyboard keyboard指令与指令与inputinput指令的区别:指令的区别: keyboard keyboard指令允许输入任意多个指令允许输入任意多个MatlabMatlab指令,而指令,而inputinput指令只能给变指令只能给变量赋值。量赋值。 return 结束该程序的执行,返回到调用函数或者键盘。结束该程序的执行,返回到调用函数或者键盘。举例举例 sum=0; for i=1:5 disp( 当前当前计算算结果果 ); sum=su

13、m+i keyboard endpause 该指令时程序运行暂停。该指令时程序运行暂停。 pause: 暂停程序,等待用户按任意键继续。暂停程序,等待用户按任意键继续。 pause(n): 程序暂停程序暂停n n秒后,继续运行。秒后,继续运行。 举例:举例:for n=3:22 mesh( magic(n) ) pause(3)endcontinue 该该语语句通常用在循句通常用在循环环控制中,包括控制中,包括 for for 循循环环和和 while while 循循环环,用于,用于结结束当次循束当次循环环,继续执继续执行下一次循行下一次循环环,但是不,但是不结结束当前循束当前循环环。一般。

14、一般 continue continue 语语句与句与 if if 语语句相句相结结合,当合,当满满足一定的条件足一定的条件时时,执执行行 continue continue 语语句。句。break 该语句该语句也是用于循也是用于循环环控制,中断当前循控制,中断当前循环环。跳。跳出当前循出当前循环环,不再,不再执执行行该该循循环环的任何操作。的任何操作。举例 sum=0; for i=1:5 if i=3 continue; % break ; end disp( 当前当前计算算结果果 ); sum=sum+i end变变量量类类型型1.局部变量2.全局变量3.永久变量二二. M. M文件的编

15、写文件的编写 局部变量局部变量每个函数都有自己的局部每个函数都有自己的局部变量,量,这些些变量存量存储在在该函数独函数独立的工作区中,与其他函数的立的工作区中,与其他函数的变量及主工作区中的量及主工作区中的变量分量分开存开存储。当函数。当函数调用用结束束时,这些些变量随之量随之删除,不保存除,不保存在内存中。并且,除了函数返回在内存中。并且,除了函数返回值,该函数不改函数不改变工作区工作区中其他中其他变量的量的值。然而脚本文件没有独立的工作区,当通然而脚本文件没有独立的工作区,当通过命令窗口命令窗口调用脚用脚本文件本文件时,脚本文件分享主工作区,当函数,脚本文件分享主工作区,当函数调用脚本文件

16、用脚本文件时,脚本文件分享主,脚本文件分享主调函数的工作区。需要注意的是,如函数的工作区。需要注意的是,如果脚本中改果脚本中改变了工作区中了工作区中变量的量的值,则在脚本文件在脚本文件调用用结束后,束后,该变量的量的值发生改生改变。在函数中,在函数中,变量默量默认为局部局部变量。量。全局变量全局变量全局全局变变量可以在定量可以在定义该变义该变量的全部工作区中有效。当在一量的全部工作区中有效。当在一个工作区内改个工作区内改变该变变该变量的量的值时值时,该变该变量在其他工作区中的量在其他工作区中的变变量同量同时时改改变变。任何函数如果需要使用全局任何函数如果需要使用全局变变量,量,则则必必须须首先

17、声明,声明首先声明,声明格式格式为为: global 变量名量名1 变量名量名2如果一个如果一个 M M 文件中包含的子函数需要文件中包含的子函数需要访问访问全局全局变变量,量,则则需在子函数中声明需在子函数中声明该变该变量,如果需要在命令行中量,如果需要在命令行中访问该变访问该变量,量,则则需在命令行中声明需在命令行中声明该变该变量。量。永久变量永久变量除局部变量和全局变量外,除局部变量和全局变量外,MATLAB MATLAB 中还有一种变中还有一种变量类型为永久变量。永久变量的特点为:量类型为永久变量。永久变量的特点为:只能在只能在 M M 文件内部定义;文件内部定义;只有该变量从属的函数

18、能够访问该变量;只有该变量从属的函数能够访问该变量;当函数运行结束时,该变量的值保留在内存中,因此当函数运行结束时,该变量的值保留在内存中,因此当该函数再次被调用时,可以再次利用这些变量。当该函数再次被调用时,可以再次利用这些变量。永久变量的定义方法为:永久变量的定义方法为:persistent 变量名量名1 变量名量名2。MM文件介文件介绍M文件是一个文本文件,可以使用各种文本文件编辑器进行编辑。M的文件建立的方法。 使用菜单命令或输入edit指令。MM文件的分类文件的分类 分为分为脚本(脚本(ScriptsScripts)和和函数(函数(FunctionsFunctions)两种。两种。

19、(1 1)Matlab Matlab 脚本脚本a. a. 经常用于一连串费时的命令经常用于一连串费时的命令b. b. 没有输入和输出参数。没有输入和输出参数。c. c. 没有独立的工作空间(没有独立的工作空间(workspaceworkspace),产生的变量),产生的变量放在放在MatlabMatlab的基本工作空间中。的基本工作空间中。 (2 2)MatlabMatlab函数函数a. a. 编辑功能复杂的计算程序,可以用来扩充编辑功能复杂的计算程序,可以用来扩充MatlabMatlab的的函数库。函数库。b. b. 可以有输入和输出参数。可以有输入和输出参数。c. c. 有独立的工作空间(

20、有独立的工作空间(workspaceworkspace),执行过程中产),执行过程中产生的变量都放在函数本身的工作空间中。生的变量都放在函数本身的工作空间中。M文件的组成组成部分组成部分功功 能能函数定义行函数定义行定义函数名、输入输出参数的数量和顺序定义函数名、输入输出参数的数量和顺序H1 行行对程序的总体介绍,当使用对程序的总体介绍,当使用help或或lookfor命令时,显命令时,显示这些信息。示这些信息。函数说明函数说明对程序的详细描述,当对函数使用对程序的详细描述,当对函数使用help命令时,与命令时,与H1行的内容一起显示。行的内容一起显示。函数或脚本主体函数或脚本主体执行命令、进

21、行计算、产生输出。执行命令、进行计算、产生输出。注释注释在程序中解释程序功能的文字。在程序中解释程序功能的文字。脚本文件举例脚本文件举例% 脚本文件脚本文件% 花瓣花瓣图theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).2;rho(2,:)=cos(10*theta).3;rho(3,:)=sin(theta).2;rho(4,:)=5*cos(3.5*theta).3;for k=1:4 polar(theta,rho(k,:) % 极坐极坐标绘图 pauseend% 运行完毕后注意观察工作空间运行完毕后注意观察工作空间function PaoWuXian(

22、a,b,c)% % 绘制抛物线绘制抛物线% % 此函数只有输入参数,没有输出参数此函数只有输入参数,没有输出参数% % 注意函数的开始和结束注意函数的开始和结束 x=-25:0.1:25; y=a*x.2+b*x+c; plot(x,y);end% 运行完毕后注意观察工作空间运行完毕后注意观察工作空间函数文件举例函数文件举例function y=average(x)% 输入、入、输出参数都有出参数都有% 注意参数注意参数y的重要性的重要性m,n=size(x);if ( ( (m=1) | (n=1) ) | (m=1 & n=1) ) error(输入参数必入参数必须是一个向量是一个向量)endy=sum(x)/length(x);end% 设置断点,调试程序,观察工作空间设置断点,调试程序,观察工作空间函数文件举例函数文件举例

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号