如何存储每次迭代的值

时间:2013-10-10 14:08:14

标签: matlab

我的代码如下:

我实际上有两个关于我的代码的问题:

1:从这段代码我想找到D.Even的值我得到“D”的值,但每次当前“D”加上前一个“D”。喜欢搞

D(1,:)=30 30 30 30 30
D(2,:)=60 60 60 60 60 
D(3,:)=89 89 89 90 90

但我想得到

 D(1,:)=30 30 30 30 30
 D(2,:)=30 30 30 30 30 
 D(3,:)=29 29 29 30 30

我知道我可以通过在获取for循环后从前一个D中提取当前D来做到这一点,但我不想这样做。我想在{{1}内做一些事情}}

  1. 另一个问题是我需要为for loop.运行此代码,我需要为单元格数组中的每个试验存储iteration=100 times的值,因为稍后我需要使用D的这些值。
  2. Matlab专家需要您提出两个问题的帮助和建议。

2 个答案:

答案 0 :(得分:1)

第一部分:循环后执行此操作

D = [D(1,:), diff(D)];

e.g。

D = [30 30 30 30 30   
     60 60 60 60 60 
     89 89 89 90 90];

[D(1,:); diff(D)]

ans =

   30   30   30   30   30
   30   30   30   30   30
   29   29   29   30   30

第二部分:为什么只将它存储在新的矩阵中?

AllTheDs{counter} = D  %// This will be outside your current for-loop but presumably inside your new loop that counts to 20k

答案 1 :(得分:0)

我的第一个想法也是@Dan提出的差异解决方案。然而,我开始想知道问题是否也许你只是继续添加东西而不打算这样做。

我发现您已将此作为rec2_Wopt更新的唯一行

rec2_Wopt(1) = rec2_Wopt(1) + sum(RecP) ;

因此,在第二个循环之后,它将包括第一个循环和第二个循环的添加是合乎逻辑的。

要解决此问题,请通过重置变量来启动每个循环。对于这个变量,它将是:

rec2_Wopt(1) = 0

或者

rec2_Wopt = zeros(1, length(N)) ;