在停止的地方恢复Matlab应用程序

时间:2016-05-06 19:19:35

标签: matlab save

我在Matlab中编写了一个应用程序(它是一个独立的应用程序),需要全天候运行。如果发生了什么事情并且它崩溃了,我有一个python脚本重新打开Matlab程序。我总是在MySQL数据库上保存一些最重要的数据,所以每当它重新打开时,我都可以从数据库中获取一些数据并重新初始化它们。但是,我需要程序重新启动它停止的地方。最好的方法是什么?

基本上是这样的:

function [] = main()    {
obj1.function1()

obj1.function2()

% if it stops in the middle of obj.function1().... 
% How can I resume the program exactly RIGHT HERE?

obj2.function1()

}

1 个答案:

答案 0 :(得分:0)

要让Matlab在启动时运行某些内容,请在Matlab主目录中的startup.m文件中添加一行。如果main位于同一文件夹中,则可以使其像

一样简单
main();

那么问题是如何从{I}停止的地方恢复main。一种选择是保存一个临时文件,跟踪您的位置,并在main每次启动时重新加载该临时文件:

function main
try
    savefile = load('status.mat');
    status = savefile.status;
catch
    status = zeros(2, 1);
end

objs = {obj1, obj2};
startObj = find(status == 0, 'first', 1);
for iO = startObj:length(objs)
    iObj = objs{iO};

    iObj.function1();
    status(1) = 1; 
    save('status.mat', 'status')
end

上述代码显然尚未经过测试且具有说明性。