matlab - 有没有办法让 Matlab 进程在执行过程中输出,这样即使在用户中断后输出也可用?
问题描述
假设func.m
我们有
function out = func(in)
for i=1:1000
out=i;
end
end
进入Matlab cmd 后,用户使用+>> out = func;
中断命令执行。CtrlC
Global Workspace 中不提供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)
,然后在按下按钮时查看答案,基本上决定何时中断循环。这样自然会对性能产生影响,但是您在问题中没有提及任何有关性能的内容。
推荐阅读
- go - 在 GO 中将字符串转换为 int
- sql-server - 如何找到 SSL 证书完整路径并在 StoredProcedure 中使用来调用 API
- firebase - Firestore 规则如何使用户只能用他们的名字读/写文档
- cmake - 创建 CMake XXConfig.cmake 让其他 cmake 项目调用
- laravel - 如何从 Laravel IOC 容器中解析上下文绑定的类
- core-data - 使用列表中的 CoreData 对象作为环境对象
- javascript - Vuejs三元运算符/条件不工作在v-bind-style
- c# - C# 找不到统一自动生成的类
- delphi - 如何使用标志 XPS_PASS 在 delphi 中将数据直接发送到 XPS 打印机
- excel - 在循环中运行鼠标左键单击,直到达到特定时间