gdb跳出循环命令_MATLAB手动跳出循环的技巧

d2891512b326aecfdbc521568ed762d2.png

以遗传算法优化为例:遗传算法的遗传代数(中止条件还有其他, 这里为简化问题,假设就只有这一种)很难设定,设太大的话,花费时间过长,设太小的话,拟合效果可能又不理想。于是希望根据观察优化效果,来手动跳出循环,停止优化。

最容易想到的失败方法是:MATLAB停止程序快捷键“Ctrl+C”,还有暂停按钮(比较新的版本的话)。

4aa31cf81bcb9d0d39cf83c6bb5893d9.png

这两种方法都能使程序停了下来, 但是都有一个明显的缺点:虽然停止了循环, 但是无法继续执行循环后面的操作, 比如输出优化结果。

当然, 你可以做一个GUI界面,通过按钮来操作, 但是这好像有些小题大做了。

这里分享一个我刚学到的简单操作方法。核心语句是“get(gcf,'CurrentCharacter')”, 意思是返回图形界面的当前字符。

先上示例代码:

figure;
while 1 %遗传算法的大循环部分
    % 遗传算法优化
    
    % 更新图形, 用于查看优化效果
    
    % 点击图形界面, 然后点击任意一个字母按键
    pause(0.0001); %必须要有这个, 要不然程序可能无法得到你的键盘输入
    if isletter(get(gcf,'CurrentCharacter'))
        break;
    end
end

% 继续做其他事
disp('继续做了其他事');

运行后, 出现了图形界面, 显示的是优化效果(上面是简化的代码, 并没有显示优化效果, 自己脑补一下吧, 哈哈),当优化效果达到你预期的效果时(或者是你没有耐心等待下去了), 鼠标选中那个图形界面, 然后点击任意一个字母按键, 命令窗口显示:

继续做了其他事

说明程序跳出了循环, 并且继续执行后续操作。

创作不易, 请大家"素质三连": 点赞, 收藏, 分享.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值