1
在我的MATLAB代码中,我想保存所有矢量的迭代数据,其中每个时间步进循环(依时间而定)都要重新计算。我非常困惑,试图找到最好的方式来做到这一点。我试图保存在一个mat文件中,但我只获取最后一个值。我必须制作矩阵吗?并保存我的载体(1行100列)到每一行?那么,我将不得不在这个矩阵中有最大的行时间步长?有其他解决方案吗?时间循环 - 将矢量数据存储在文件中而不会覆盖
在我的MATLAB代码中,我想保存所有矢量的迭代数据,其中每个时间步进循环(依时间而定)都要重新计算。我非常困惑,试图找到最好的方式来做到这一点。我试图保存在一个mat文件中,但我只获取最后一个值。我必须制作矩阵吗?并保存我的载体(1行100列)到每一行?那么,我将不得不在这个矩阵中有最大的行时间步长?有其他解决方案吗?时间循环 - 将矢量数据存储在文件中而不会覆盖
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
一些示例代码或您迄今为止所做的工作将会很有用。 – Marcin
您可能正在寻找['save('myfile.mat','myvec','-append');'](http://www.mathworks.com/help/matlab/ref/save.html),但正如Marcin所说,发布一些代码可以更容易地回答你的问题。 – Praetorian
我试图发布我的代码样本,但我不能。 -append解决方案不起作用。每个循环都重新定义我的向量。我需要创建一个新的矩阵,其中原始数据将是每个时间步的值。我不知道怎么做。 – user1640255