我有一个在集群上运行的 Matlab 脚本。如果时间超过某个时间点,它就会被杀死。我想在脚本被杀死之前使用 onCleanup 来保存一些(或全部)变量。
我尝试了以下方法:
function [] = test
ita = 5;
finishup = onCleanup(@() save('test.mat','ita'));
pause(7200);
disp('done')
exit
end
我认为变量“ita”在执行 onCleanup 之前被杀死,它没有找到那个变量。如果我将函数转换为脚本,也会出现同样的情况。
ita = 5;
finishup = onCleanup(@() save('test.mat','ita'));
pause(7200);
disp('done')
exit
我怎样才能做对?
当然,如果我在函数内部使用 onCleanup,那么它会在函数停止时立即执行(例如 ctrl+c)。如果我使用脚本,则仅当 Matlab 退出时才执行 onCleanup。
最佳答案
我不会完全推荐这个...但它可以解决您的问题。将 ita
设置为 global
,然后使用子函数调用来执行清理/MAT 文件保存。这样 ita
就在范围内。
这在函数完成或我在暂停期间按 Ctrl+C 时有效。
function [] = test()
global ita
ita = 5;
finishup = onCleanup(@() cleanMe());
pause(7200);
disp('done')
function cleanMe()
global ita
save('test.mat','ita')
关于matlab - 如何在 Matlab 中使用 onCleanup 保存变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31390225/