【 MATLAB 】程序流程控制语句格式简记

举报
李锐博恩 发表于 2021/07/15 07:15:53 2021/07/15
【摘要】 目录 if-else-end 结构 switch - case - otherwise - end 结构 for 循环 while 循环 try - catch 结构 其他中断、暂停语句 下面主要记录matlab中的程序流程控制格式: if-else-end 结构 1. if expr      %expr为表达式,如果成...

目录

if-else-end 结构

switch - case - otherwise - end 结构

for 循环

while 循环

try - catch 结构

其他中断、暂停语句


下面主要记录matlab中的程序流程控制格式:


if-else-end 结构

1.


  
  1. if expr      %expr为表达式,如果成立,则执行到end为止的所有commands,否则不执行
  2. commands;
  3. end

2.


  
  1. if expr1
  2. commands1;
  3. elseif expr2
  4. commands2;
  5. else
  6. commands3;
  7. end

根据程序分支的多少,elseif的个数可以有0个到多个。


switch - case - otherwise - end 结构


  
  1. switch expr
  2.     case value1
  3. command1;
  4. case value2
  5. command2;
  6. ...
  7. case valuek
  8. commandk;
  9. otherwise
  10. commands;
  11. end

otherwise建议始终保留,commands可以为空语句;


for 循环


  
  1. for ix = array
  2. commands;
  3. end

在命令窗口中输入以下代码,体会for循环的用法。


  
  1. for i = 1:10
  2. a = i;
  3. end


  
  1. clear;
  2. clc;
  3. for i = (1:10)'
  4. a = i;
  5. end


  
  1. for i = [1 2 3;4 5 6;7 8 9]
  2. a = i;
  3. end

 

从运行结果可以看出,for循环在MATLAB中和其他语言中还是有些差别的。MATLAB的for循环的机制是遍历array的列,无论这个array是向量还是矩阵。如果array是行向量,那么for就遍历它的每个元素;如果是列向量,for循环就循环一次,即遍历列向量本身;如果array是矩阵,那么for循环就遍历它的每一个列,循环n次,n是array的列数。此外,如果array是三维矩阵,那么for循环先遍历第一页的所有列,之后是第二页的所有列,等等。


while 循环


  
  1. while expr //expr为真执行commands,否则退出循环
  2. commands;
  3. end

try - catch 结构


  
  1. try
  2. commands1;
  3. catch ME
  4. commands2;
  5. end

该结构意义是执行commands1,如果不发生错误,则不用执行commands2;如果执行commands1的过程中发生了错误,那么commands2就会被执行,同时ME记录了发生错误的相关信息。


其他中断、暂停语句

MATLAB在循环体内还可以利用 continue 语句跳出位于它之后的循环体的其他指令,而执行循环的下一次迭代:


  
  1. clear;
  2. clc;
  3. for ix = 1:5
  4. if ix == 3
  5. continue
  6. end
  7. disp( ['ix =', num2str(ix)] )
  8. end

MATLAB还可以用break语句结束包含该指令的while或for循环体,用于跳出循环。

例如:


  
  1. clc
  2. clear
  3. jx = 3;
  4. for i = 1:3
  5. if i == 2
  6. disp( ['i = ', num2str(i)] );
  7. break
  8. disp( ['jx = ', num2str(jx)]);
  9. end
  10. end

当i = 2时,执行if - end结构中的内容,可见jx = 3,没有显示,因为程序见到break就跳出了循环。

最后一个:

pause(n)可以使程序暂停n秒后再继续执行;pause指令使程序暂停执行,等待用户按任意键继续。


最后,我在《MATLAB高效编程技巧与应用》这本书时,对于break指令,书中说:break语句还可以在if -end,switch - case,try - catch结构中使用,还给出了如下的例子:


  
  1. clc
  2. clear
  3. jx = 3;
  4. ix = 6;
  5. if jx == 3
  6. disp( ['i = ', num2str(i)] );
  7. break
  8. disp( ['jx = ', num2str(jx)]);
  9. end

可执行的时候,出现如下:

可见,这种说法是错误的,这里在这里指出来。

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/82831593

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。