如何解决有没有办法在执行过程中使 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
之前定义了 out = func;
,则不会更新。
有没有办法在用户中断时和执行 out
期间使 func
在全局工作区中可用,只要它在 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)
,并在您按下按钮时查看答案,基本上决定何时中断循环。这种方式自然会对性能造成影响,但您在问题中没有提及任何有关性能的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。