Matlab 时间循环-在不覆盖的情况下将矢量数据存储在文件中

Matlab 时间循环-在不覆盖的情况下将矢量数据存储在文件中,matlab,vector,save,iteration,Matlab,Vector,Save,Iteration,在我的MATLAB代码中,我想保存所有向量的迭代数据,其中一个在每个时间步循环中重新计算(取决于时间)。我很困惑如何找到最好的方法。我试图保存在mat文件中,但只得到最后一个值。我必须做一个矩阵吗?并将我的向量(1行-100列)保存到每行?那么,我必须得到这个矩阵中行的最大时间步长?是否有其他解决方案?mat文件不能包含两个同名变量。您需要为每次迭代中保存的变量指定一个新名称,否则它只会覆盖mat文件中相同名称的变量 最简单的方法是使用MATLAB结构的动态字段名语法,使用名称中的迭代索引在结构

在我的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所说,发布一些代码将使回答您的问题变得更容易。我试图发布我的代码示例,但我做不到。-append解决方案不起作用。每个循环都会重新定义我的向量。我需要创建一个新的矩阵,其中的RAW将是每个时间步的值。我不知道怎么做。我的回答有用吗?