如何在matlab的单独文件中保存工作空间中的动态变量?

时间:2016-04-17 20:12:56

标签: database matlab

我正在研究一个问题,我有一个100个元素的数组A。 所有这100个元素都随着时间而变化。 所以在我的工作区中,我只在整个时间周期运行后得到所有这些元素的最终值。

我正在尝试将值随时间保存在单独的文件(.txt或.mat)中,以便我可以访问该文件以检查变量如何随时间变化。

我正在尝试以下命令:

save('file.mat','A','-append');

但是这个命令会覆盖我文件中的现有值。

请建议我一种保存这些值而不覆盖它们的方法,并指导我如何在MATLAB中访问它们。

2 个答案:

答案 0 :(得分:2)

您还可以将输出文件名更改为每次迭代都是唯一的:

for iter=1:n
    A = rand(10);
    save(sprintf('file%d.mat',iter), 'A');
end

这样每次迭代都会创建一个文件。

答案 1 :(得分:0)

保存到文件(即使使用-append)标志不起作用的原因是因为变量A已经存在于文件中并且每次都会在循环中被覆盖。您需要在每次循环时创建一个新文件或新变量名称,以便不会发生这种情况。

将结果保存在文件中可能不是存储A的时变值的最佳方法。最好使用单元格数组存储A的所有中间值。

A_over_time = cell();

for k = 1:n
    %// Get A somehow
    A_over_time{k} = A;
end

根据 A的内容,您还可以将A的值存储在数字数组或矩阵中。

%// Using an array
A_over_time = zeros(N, 1);
for k = 1:N
    A_over_time(k) = A;
end

%// Using a matrix
A_over_time = zeros(N, numel(A));
for k = 1:N
    A_over_time(k,:) = A;
end