版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. MATLAB编程入门(二)2.While 循环 与For循环以固定次数求一组命令的值相反,While 循环以不定的次数重复执行一组语句。While循环的一般形式是:while 表达式1 语句1end只要表达式1里的所有元素为真,就执行while和end之间的语句1,否则,就结束循环。通常,表达式的值给出一个标量值,但数组值也同样有效。在数组情况下,当数组的所有元素为真(值不等零)时,就执行语
2、句1,数组中有一个元素为假(值为零),就结束循环。例3按下面的公式计算:使误差小于给定的. 解: 把作为误差,程序如下:error=input('请输入误差:');x=1;y=0;n=1;while x>error y=y+1; x=x/n; n=n+1;ende=y运行如下:请输入误差:0.001e = 2.71813.IF-ELSE-END 结构 很多情况下,命令的序列必须根据关系的检验
3、有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是:if 表达式1语句1end 如果在表达式1中的所有元素为真(非零),那么就执行if和end语言之间的语句1。 假如有两个选择,If-Else-End结构是: if 表达式1 语句1 else 语句2 end在这里,如果表达式1为真,则执行语句1;如果表达式是假,则执行语句2。 当有三个或更多的选择时,If-Else-End结构采用形式 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式4 语句4 elseif else 语句
4、 end 如果表达式1为真,则执行语句1,结束循环;如果表达式1为假,则检验表达式2,如果表达式2为真,则执行语句2,结束循环;如果表达式2为假,则检验表达式3,如此下去,如果所有表达式都为假时,则执行最后的语句。即只执行第一个真值表达式相关的语句;接下来的表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。4.switch-case-end结构 如果在一个程序中,必须针对某个变量不同取值情况进行相应操作,switch语句比if else语句更方便。switch语句的一般形式为: switch 分支条件(数值或字符串) case 数值(或字符串)条件1 语句1
5、 case 数值(或字符串)条件2 语句2 case 数值(或字符串)条件3 语句3 case . . otherwise 语句 end其中分支条件可以是一个函数、变量或者表达式.如果条件1与分支条件匹配就执行语句1,退出循环;否则,检验条件2,如果条件2与分支条件匹配执行语句2,退出循环;否则,检验条件3,.,当所有条件都不与分支条件匹配时就执行最后的语句。注意otherwise是可以省略的。 例4 在图形界面上放置一个弹出式菜,点击弹出式菜单可以设置曲线颜色。 解:程序如下:x=linspace(-6,6,50);y=sin(x);h=plot(x,y,'linewidth'
6、;,4);h0=uicontrol('position',600,500,100,30,. 'style','popupmenu',. 'string','红色|蓝色|黄色|黑色|青色',. 'callback',. 'v=get(h0,''value'');',.
7、60; 'switch v;',. 'case 1;',. 'set(h,''color'',''r'');',. '
8、;case 2;',. 'set(h,''color'',''b'');',. 'case 3;',. 'set(h,''color'',''y'
9、39;);',. 'case 4;',. 'set(h,''color'',''k'');',. 'case 5;',.
10、60; 'set(h,''color'',''c'');',. 'end;');计算机程序就是计算机指令的集合,不同的编程语言指令与功能是不一样的.MATLAB语言是一种面向对象的高级语言,它具有编程效率高、易学易用的优点. MATLAB与其它大部分高级语言一样,有它自己的控制流语句.控制流极其重要,因为它使过去的计算影响将来的运算。MATLAB提供如下几种控制
11、流结构:For循环,While循环,If-Else-End结构和switch-case-end结构。由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件中.MATLAB支持的控制流语句和C语言支持的控制流语句在调用格式上非常相似.1.For 循环 For循环允许一条语句或一组语句被重复执行预先指定的次数。For循环的一般形式是: for x =array
12、60; 语句 end在for和end语句之间的语句按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。例如, for n=1:10
13、 x(n)=sin(n*pi/10); end x x = 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 &
14、#160;0.5878 0.3090 0.0000 换句话,第一语句是说:对n等于1到10,执行所有语句,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后执行end语句后面的任何命令.注意,该循环结束后,n=10. For循环的其它重要方面是: (1)For循环不能用For循环内重新赋值循环变量n来终止。
15、For n=1:10 x(n)=sin(n*pi/10); n=9; end x x = 0.3090 0.5878 0.8090 0.9511 1.0000
16、60;0.9511 0.8090 0.5878 0.3090 0.0000 n n= 9执行过程是这样的:n=1,x(1)=sin(pi/10),n=9,n=2,
17、x(2)=sin(2*pi/10),n=9,n=3,.,n=10,x(10)=sin(10*pi/10),n=9.循环结束后,n=9. (2)在For循环内接受任何有效的MATLAB数组。 data=3 9 45 6; 7 16 -1 5 data = &
18、#160; 3 9 45 6 7 16 -1 5 for n=data &
19、#160; x=n(1)-n(2) end x = -4 x =
20、0; -7 x = 46 x =
21、160; 1 (3)For循环可按需要嵌套。 For n=1:5 for m=1:5 A(n,m)=n2+m2;
22、; end disp(n) end 1
23、; 2 3 4 5 A &
24、#160; A = 2 5 10 17 26 5 8 13 20 29 &
25、#160; 10 13 18 25 34 17 20 25 32 41 26 29 &
26、#160; 34 41 50 (4)当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的第一个例子可被重写为 n=1:10; x=sin(n*pi/10) x = 0.3090 0.5878 0.8090 0.9511 &
27、#160; 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。 (5)为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更
28、多的内存。为了消去这个步骤,For循环的例子应重写为 x=zeros(1,10); for n=1:10 x(n)=sin(n*pi/10);
29、 end现在,只有x(n)的值需要改变。 例1 相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦?(1 小麦约 颗) 解: 麦粒总数为
30、60; 程序如下:a=1;s=0for i=1:64 s=s+a; a=2*a;ends=s/1.4/108运行后得:s= 1.3176e+011 例2 公元前五世纪我国古代数学家张丘建在算经一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
31、160; 解 设 x:鸡翁数,则x的范围:019 y:鸡母数,则y的范围:033 z:鸡雏数,则z的范围:0100则: x+y+z=100 5x+3
32、y+z/3=100这是一个不定方程。for x=0:19 for y=0:33 for z=0:100 if (x+y+z=100)&(5*x+3*y+z/3=100)
33、; d=x,y,z end end endend运行后得结果:d = 0 25 75d =
34、160;4 18 78d = 8 11 81d = 12 4 84 2.While 循环 与For循环以固定次数求一组命令的值相反,While 循环以不定的次数重复执行一组语句。While循环的一般形式是:
35、60; while 表达式1 语句1 end只要表达式1里的所有元素为真,就执行while和end之间的语句1,否则,就结束循环。通常,表达式的值给出一个标量值,但数组值也同样有效。在数组情况下,当数组的所有元素为真(值不等零)时,就执行语句1,数组中有一个元素为假(值为零),就结束循环。 例3按下面的公式计算:
36、0; 使误差小于给定的 . 解: 把 作为误差,程序如下:error=input('请输入误差:');x=1;y=0;n=1;while x>error y=y+1; x=x/n; n=n+1;ende=y运行如下:请输入误差:0.001e = 2.71813.IF-ELSE-END 结构
37、0; 很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是: if 表达式1 语句1 end 如果在表达式1中的所有元素为真(非零),那么就执行if和end语言之间的语句1。 假如有两个选择,If-Else-End结构是: if 表达式1
38、 语句1 else 语句2 end在这里,如果表达式1为真,则执行语句1;如果表达式是假,则执行语句2。 当有三个或更多的选择时,If-Else-End结构采用形式 if 表达式1
39、 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式4 语句4 elseif
40、 else 语句 end
41、60; 如果表达式1为真,则执行语句1,结束循环;如果表达式1为假,则检验表达式2,如果表达式2为真,则执行语句2,结束循环;如果表达式2为假,则检验表达式3,如此下去,如果所有表达式都为假时,则执行最后的语句。即只执行第一个真值表达式相关的语句;接下来的表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。4.switch-case-end结构 如果在一个程序中,必须针对某个变量不同取值情况进行相应操作,switch语句比if else语句更方便。switch语句的一般形式为:
42、 switch 分支条件(数值或字符串) case 数值(或字符串)条件1 语句1 case 数值(或字符串)条件2 语句2 case 数值(或字符串)条件3
43、160; 语句3 case . . otherwise 语句 end其中分支条件可以是一个函数、变量或者表达式.如果条件1与分支条件匹配就执行语句1,退出循环;否则,检验条件2,如果条件2与分支条件匹配执行语句2,退出循环;否则,检验条件3,.,当所有条件都不与分支条件匹配时就执行最后的语句。注意otherwise是可以省略的。 例4 在图形界面上放置一个弹出式菜,点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿夏季健康饮食主题活动
- 入厂员工安全培训
- 3.2海水的性质(第1课时)(导学案)高一地理同步高效课堂(人教版2019必修一)
- 山西新力惠中等10所名校高三月考卷·英语试题(新外研版教材 ) - 副本
- 江西省九江市都昌县2024-2025学年三年级上学期期中数学试题
- 2024--2025学年江苏省宿迁市沭阳县广宇学校八年级(上)第一次月考数学试卷(含答案)
- 河北省衡水市武强中学2024-2025学年高三上学期期中考试生物试题 含解析
- 高中语文第17课原毁课件粤教版选修唐宋散文蚜
- 高中物理第四章电磁波及其应用第一节电磁波的发现课件新人教版选修1-
- 高中语文第3课老人与海课件5新人教版必修
- 安全告知卡(液 氨 )
- JJF1101-2019环境试验设备温度、湿度校准规范-(高清现行)
- 现行铁路技术标准、规范清单
- 环境致病菌监控计划
- 组织级项目管理成熟度(OPM3)
- (完整PPT)干眼的诊治课件
- 弹塑性力学习题题库加答案(一)
- 曼浦汉克化工(上虞)有限公司年产370吨铋、铟、钴、镍无机盐、
- DB11_T1883-2021 非透光幕墙保温工程技术规程(高清最新版)
- 消防系统维修保养及设施检测技术方案
- 任务5-给水系统的工作工况
评论
0/150
提交评论