Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在for循环中使用pause和openvar_Matlab - Fatal编程技术网

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主线程的唯一方法