如何保存Matlab运行代码并在以后恢复

时间:2018-07-16 08:28:55

标签: matlab

我正在运行Matlab程序,需要几天才能完成。由于我国电力不足的一些问题!该程序无法继续运行所需的时间。因此,我希望在某些时候保存正在运行的进程,以便能够在中断之前从上次保存的位置恢复代码。 我可以保存变量并编写复杂的代码来实现此目的,但是由于程序非常复杂,包含许多变量和....这将非常困难。 Matlab是否支持此类要求?

1 个答案:

答案 0 :(得分:2)

您可以save your workspace在您想要的点上:

% Some code
...
% Save the workspace variables in a .mat file
save myVariables.mat

这样做,所有变量都将存储在myVariables.mat文件中。请注意,文件大小可能很重要。

您可以轻松地加载工作区:

% Load the saved variables
load myVariables.mat

但是,您将必须修改代码以处理中断。一种方法是添加变量以检查上次保存的状态,并仅在尚未保存的情况下运行该步骤。

例如:

% load the workspace, if it exists
if exists('myVariables.mat', 'file') == 2
    load 'myVariables.mat'
else
    % If it does not exist, compute the whole process from the beginning
    stepIdx = 0
end

% Check the stepIdx variable
if stepIdx == 0
    % Process the first step of the process
    ...
    % mark the step as processed
    stepIdx = stepIdx + 1
    % Save your workspace
    save 'myVariables.mat'
end

% Check if the second step hass been processed
if stepIdx <=1
    % Process the step
    ....
    % mark the step as processed
    stepIdx = stepIdx + 1
    % Save your workspace
    save 'myVariables.mat'
end

% Continue for each part of your program

编辑 正如@brainkz指出的那样,您的工作区肯定会包含大量变量,这除了导致产生一个大的.mat文件之外,还会使保存指令耗时。 @brainkz建议通过将相关变量作为参数传递给save命令来仅保存相关变量。根据您的代码,通过使用字符串并在此过程中完成此变量可以更容易处理。例如:

% ---- One step of your program
strVariables = ''
x = ... % some calculation
y = ... % more calculation
strVariables = [strVariables, 'x y ']; % note that you can directly write strVariables = ' x y'
z = ... % even more calculation
strVariables = [strVariables, 'z '];
% Save the variables
save('myVariables.mat', strVariables )

对于其他步骤,如果您不再需要包含它或保留它,可以清除strVariables