【问题标题】:MATLAB script does not terminate on MacMATLAB 脚本不会在 Mac 上终止
【发布时间】:2014-10-08 17:51:29
【问题描述】:

我在 MATLAB 2014a 上运行它,命令行不返回。

a = 0;
while (1)
    a = a + 1;
    if (a ~= 2)
        continue;
    end;
end;

当我执行 control-Ccommand-. (或任何其他常见的组合键)。如何让脚本终止?

【问题讨论】:

  • 相关:What is a “tight loop”?。您希望您的循环自行正常退出,还是希望能够使用 control-C 中止您的脚本/函数?
  • 我刚刚在 Linux 机器上使用 R2013a 进行了尝试,并得到了相同的行为。我怀疑需要非常熟悉 matlab 解释器才能知道为什么中断信号没有到达它。
  • @AnonSubmitter85:因为这是一个紧密的循环——请参阅我上面评论中的链接。循环需要有一个明确的pause 或调用另一个函数(例如,涉及图形的东西),以允许命令窗口有足够的时间/资源来中断正在运行的代码。

标签: macos matlab terminate


【解决方案1】:

尝试“中断”,而不是“继续”。

这是我的推理:

“继续”会暂时中断程序循环的执行,跳过循环体中的所有剩余语句,仅限当前循环

所以它不会完全退出循环,它会跳过循环中的任何剩余代码,然后重新评估 while 循环的条件,在你的情况下 始终为真 .

相比之下,break 完全退出循环。

另一种方法是重写你的循环语句,例如:

a = 0;
while a~=2
  a = a + 1;
end

不知道为什么它不会停止使用 ctrl-c 运行。我预计您的脚本已经运行了很长时间,以至于您的机器的响应速度可能会逐渐降低。本文提示:http://www.mathworks.com/help/matlab/matlab_env/stop-execution.html

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2021-08-22
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    相关资源
    最近更新 更多