如何在for循环中使用openvar的pause

时间:2016-04-27 01:08:39

标签: matlab

使用以下代码:

tmpTable = table([1;2;3]);

for i = 1:5
    openvar tmpTable
    pause
end

当我运行for循环时,我得到的只是变量编辑器中的空白屏幕,除了正确显示表的尺寸。如果我从for循环中断,表格会正确显示。

enter image description here

我的问题是,如何在for循环中以编程方式显示此表,并使用一个暂停命令,允许我在移动到下一个表之前检查该表?

1 个答案:

答案 0 :(得分:1)

正在发生的事情是pause暂停主MATLAB线程,这就是为什么你在变量编辑器中看不到任何东西的原因。如果你想让主要的MATLAB线程空闲,你必须让MATLAB进入调试模式....或者当然你已经发现了中断循环。

A" hackish"让事情顺利的方法是插入keyboard语句而不是pause来强制MATLAB进入调试模式。一旦你在那里,你必须使用dbcont继续循环的下一次迭代。这将使MATLAB再次进入调试模式,因为将再次遇到keyboard语句,从而释放主线程。这一直重复到最后一次迭代。

因此:

tmpTable = table([1;2;3]);

for i = 1:5
    openvar tmpTable
    keyboard; %// Change
end

当您查看命令提示符时,一旦执行循环的第一次迭代,您将看到K>>。这表示您处于调试模式。要继续下一次迭代,请在命令提示符中键入dbcont,然后按 ENTER 。您可以通过按键盘上的向上箭头重新使用最后一个命令,然后再次按 ENTER 并继续执行此操作,直到循环的最后一次迭代。遗憾的是,您必须在命令提示符中单击返回,因为在您再次输入命令之前,焦点将放在变量编辑器上。如果您想在任何时候退出调试模式,请使用dbquit。这将终止任何代码执行并返回命令提示符。

这是在我知道的每次迭代中释放主MATLAB线程的唯一方法。