2014-02-25 30 views
1

在我的MATLAB代码中,我想保存所有矢量的迭代数据,其中每个时间步进循环(依时间而定)都要重新计算。我非常困惑,试图找到最好的方式来做到这一点。我试图保存在一个mat文件中,但我只获取最后一个值。我必须制作矩阵吗?并保存我的载体(1行100列)到每一行?那么,我将不得不在这个矩阵中有最大的行时间步长?有其他解决方案吗?时间循环 - 将矢量数据存储在文件中而不会覆盖

+0

一些示例代码或您迄今为止所做的工作将会很有用。 – Marcin

+0

您可能正在寻找['save('myfile.mat','myvec','-append');'](http://www.mathworks.com/help/matlab/ref/save.html),但正如Marcin所说,发布一些代码可以更容易地回答你的问题。 – Praetorian

+0

我试图发布我的代码样本,但我不能。 -append解决方案不起作用。每个循环都重新定义我的向量。我需要创建一个新的矩阵,其中原始数据将是每个时间步的值。我不知道怎么做。 – user1640255

回答

1

mat文件不能包含具有相同名称的两个变量。您需要在每次迭代中为您保存的变量赋予一个新名称,否则它只会覆盖mat文件中相同名称的变量。

最简单的方法是使用MATLAB结构的动态字段名语法在名称中使用迭代索引在结构中创建新字段。然后可以使用save-struct选项将该字段直接保存到mat文件(无父结构)。

for a = 1:100 
    A = rand(10);     % Compute output to be saved here 
    s.(sprintf('iter%d', a)) = A; % Save it to a new variable in a structure 
    save('myfile.mat', '-struct', 's', '-append'); % Append to your mat file 
    clear s      % Clear the structure 
end 
相关问题