Matlab 如何在for循环中使用pause和openvar
使用以下代码:Matlab 如何在for循环中使用pause和openvar,matlab,Matlab,使用以下代码: tmpTable = table([1;2;3]); for i = 1:5 openvar tmpTable pause end 当我运行for循环时,我得到的只是变量编辑器中的一个空白屏幕,只是表的维度显示正确。如果我从for循环中断,表将正确显示 我的问题是,如何在for循环中以编程方式显示此表,并使用类似暂停的命令,允许我在移动到下一个表之前检查该表?发生的情况是,pause正在暂停MATLAB主线程,这就是为什么在变量编辑器中看不到任何内容。如果你
tmpTable = table([1;2;3]);
for i = 1:5
openvar tmpTable
pause
end
当我运行for循环时,我得到的只是变量编辑器中的一个空白屏幕,只是表的维度显示正确。如果我从for循环中断,表将正确显示
我的问题是,如何在for循环中以编程方式显示此表,并使用类似暂停的命令,允许我在移动到下一个表之前检查该表?发生的情况是,
pause
正在暂停MATLAB主线程,这就是为什么在变量编辑器中看不到任何内容。如果你想让MATLAB主线程空闲,你必须让MATLAB进入调试模式。。。。当然,也可以像你发现的那样打破循环
一种“黑客”的方法是插入一条语句,而不是pause
,以强制MATLAB进入调试模式。一旦到了那里,就必须使用继续循环的下一个迭代。这将使MATLAB再次进入调试模式,因为将再次遇到键盘
语句,从而释放主线程。这会一直重复到最后一次迭代
因此:
tmpTable = table([1;2;3]);
for i = 1:5
openvar tmpTable
keyboard; %// Change
end
当您在命令提示符下执行循环的第一次迭代时,您将看到K>
。这表示您处于调试模式。要继续下一次迭代,请在命令提示符下键入dbcont
,然后按ENTER键。您可以重复使用上一个命令,方法是按下键盘上的向上箭头,然后再次按下ENTER键,并继续执行此操作,直到循环的最后一次迭代。很遗憾,在再次输入命令之前,必须在命令提示符中单击“上一步”,因为焦点将放在变量编辑器上。如果您想在任何时候退出调试模式,请使用。这将终止任何代码执行,并将您带回命令提示符
据我所知,这是在每次迭代中真正释放MATLAB主线程的唯一方法