有没有一种方法可以在执行过程中使Matlab进程输出,以便即使在用户中断后也能获得输出



假设在func.m中我们有

function out = func(in)
for i=1:1000
out=i;
end
end

在Matlab cmd中输入>> out = func;后,用户用Ctrl+C中断命令执行。

out不是等于1到1000之间的某个整数,而是out在全局工作区中不可用。如果在调用out = func;之前已经定义了out,则不会对其进行更新。

有没有一种方法可以在用户中断时和执行func期间使out在全局工作区中可用,只要它是在func中定义的?

如果有办法的话,同样的方法会适用于函数因抛出错误而中断的情况吗?

(如果获得的便利是关于一个功能,这可能看起来微不足道。毕竟,向硬盘驱动器写入和稍后从硬盘驱动器读取始终是一种选择,尽管不是一种有效的选择。多年来,在很多功能中,这样的功能对我来说都很方便,并提高了我的生产力。所以我终于问了。(

因此,这里有一个解决方案,可以通过按下消息框上的按钮来中断循环。。。。不是ctrl-c,而是中断循环的另一种方法:

function out=interrupted_loop_example(in) 
f = msgbox('break the loop?') ;
%---------- this is a sample loop:
out=in;
while(~breakloop(f))   
out=out+1;
end
%--------------------------------
% clean up:
if ishandle(f) ;  delete(f) ;  end %  to kill the msgbox
% helper function
function x = breakloop(f)
drawnow ;          % allowing matlab to detect a button was pressed
x = ~ishandle(f) ;  

复制该函数,运行它,例如interrupted_loop_example(100),并在按下按钮时查看ans,基本上决定何时中断循环。当然,这样会对性能造成影响,但您在问题中没有提到任何关于性能的内容。

相关内容

  • 没有找到相关文章

最新更新