我有一个在集群上运行的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。
答案 0 :(得分:2)
我不会完全推荐这个...但它可以解决您的问题。将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')