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循环保存迭代向量的主要内容,如果未能解决你的问题,请参考以下文章