使用以下代码:
tmpTable = table([1;2;3]);
for i = 1:5
openvar tmpTable
pause
end
当我运行for循环时,我得到的只是变量编辑器中的空白屏幕,除了正确显示表的尺寸。如果我从for循环中断,表格会正确显示。
我的问题是,如何在for循环中以编程方式显示此表,并使用一个暂停命令,允许我在移动到下一个表之前检查该表?
答案 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线程的唯一方法。