Matlab 循环及跳出循环

目录

一、循环语句 for / while

* 并行运算 parfor

二、三种循环中断语句 continue / break / return

 * matlab 中其他表示终止 error / quit / exit、中断 input、暂停 pause 的语句

三、如何在出现错误时继续下一次循环 try-catch-end

四、实现 “do while” 循环(while true - if break)

五、程序运行日志 diary

六、程序用时 tic toc


一、循环语句 for / while

需要重复运行的语句在 matlab 中可以用 for 或 while 循环来实现。

for
while

除了根据循环次数或循环条件选择合适的循环语句,为了使循环真正提高效率,提高循环的鲁棒性,并记录循环中的必要信息就尤为重要。

另外需要提醒的是,matlab 是更适合矩阵运算的语言,矩阵计算可行时优先选用矩阵计算

* 并行运算 parfor

二、三种循环中断语句 continue / break / return

continue将控制传递给 for 或 while 循环的下一迭代。它跳过当前迭代的循环体中剩余的任何语句。程序继续从下一迭代执行。
break终止执行(完全退出) for 或 while 循环。
return将控制权交还给调用脚本或函数。(退出函数

 * matlab 中其他表示终止 error / quit / exit、中断 input、暂停 pause 的语句

一篇很好的文章:matlab脚本终止、中断、暂停的几个函数(pause、error、break、quit、exit、return)-错误提示和错误报告 - 一杯明月 - 博客园 (cnblogs.com)

三、如何在出现错误时继续下一次循环 try-catch-end

cd
diary()
diary off; % 如果希望只记录错误信息,创建日志文件后先关闭

tic
for i = 1:length()
    try
        statement
    catch ME
        diary on
        disp(['Error Message:'])
        disp(ME.identifier)
        disp(ME.message)
        for i = 1:numel(ME.stack)
           disp(ME.stack(i))
        end
        diary off
        continue
    end
end
toc

四、实现 “do while” 循环(while true - if break)

do-while 循环先执行循环体中的代码,然后判断条件是否满足,根据判断结果决定是否继续循环。

matlab 中没有 do while 循环,但可实现类似功能。

注意:合理设置 break 语句,防止进入死循环。

while true % 或 while 1

% 需要重复的代码

if % 结束循环的判断条件
    break
else
    % 下一次循环前需执行的内容
end
end

4.1 应用:未知总数图窗的批量操作

比如,批量保存或修改图窗命名等属性,处理完后关闭图窗,然后进行下一个图窗的操作

直到所有图窗被关闭

这时不可用 gcf 来获取当前图窗,因为当图窗不存在时,gcf 会自动新建一个

流程如下:

    while true % 或 while 1 % 需要重复的代码
       
        % 如果要获取当前图窗的句柄而不强制创建不存在的图窗
        f = get(groot,'CurrentFigure');
        
        if isempty(f) % 结束循环的判断条件
            disp('No more figure!')
            break
        else
            oldFigname = f.Name;
            newFigname = [oldFigname,'-plus'];
            f.Name = newFigname;

            % save 相关操作

            close f
        end
    end

五、程序运行日志 diary

cd ''
diary('.txt')
diary on;
% statement
diary off

六、程序用时 tic toc

t1 = tic;
%statement
t2 = tic;
%statement
toc(t2)
toc(t1)

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值