如何在Matlab中使用onCleanup保存变量?

时间:2015-07-13 17:56:33

标签: matlab

我有一个在集群上运行的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。

1 个答案:

答案 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')