Matlab循环保存迭代向量

Posted

技术标签:

【中文标题】Matlab循环保存迭代向量【英文标题】:Matlab save iterated vectors in loop 【发布时间】:2014-02-25 02:33:57 【问题描述】:

我正在尝试保存向量1x100,它们在每个循环中都会发生变化。 代码示例:

i=1;
while i
   for i=1:N
      A(i)   = A(i) + B(i)*i;
   end
   for i=1:N
      C(i)=D(i) + B(i)*dt;
   end
   t=t+dt;
   if t<=tmax;
      save 'savedata.mat', C, A`
      i=i+1
   else
      break
   end
end

我试过上面的代码没有成功。

拜托,任何想法都非常受欢迎。

【问题讨论】:

我看到您在代码末尾缺少end 这是一个示例代码。我的原始代码很大!我的问题与保存数据无关。拜托,你能帮我吗? 您需要更好地解释代码。你想在这些循环中做什么? “没有成功”是什么意思?我认为您一遍又一遍地将数据保存在同一个文件中。这是预期的行为吗? 是的,你说得对。在程序结束时,我只看到文件中的最后一次迭代数据。因为它是在每个循环上覆盖的文件。我需要保存所有循环数据。 A 和 C 向量取决于时间。因此,在每个循环上都有其他值。最终我想要做的是拥有一个 Amatrix 和 Cmatrix,它们在每个原始或列中都有每次迭代的结果。 在每个循环的定义中使用i 可能不是最好的主意,我敢肯定它会导致一些奇怪的行为。 【参考方案1】:

为了获得更好的答案,您应该提供更多问题的详细信息。

假设给定tmax, dt, N, A, B, D,t从0开始:

% preallocate finalA and finalC:
num_steps = length(0:dt:tmax);
finalA = zeros(num_steps,N);
finalC = zeros(num_steps,N);
% loop:
for j = 1:num_steps
   for i=1:N
      finalA(j,i) = A(i) + B(i)*i;
      finalC(j,i) = D(i) + B(i)*dt;
   end
end
save('savedata.mat', 'finalA', 'finalC');

【讨论】:

以上是关于Matlab循环保存迭代向量的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中的每次迭代中保存具有不同名称的文件? MATLAB

如何将脚本中的结果保存在 Matlab 中的向量中?

如何在matlab中保存通过for循环生成的数据?

时间循环 - 将矢量数据存储在文件中而不覆盖

将数据变量从 matlab 保存到 csv 或文本文件

在 for 循环的每次迭代中保存变量并稍后加载它们