如何使用for循环将前一次迭代的值添加到当前迭代中?

时间:2014-02-24 15:23:59

标签: matlab

我想把这个矢量放在一个LOOP中。我不知道怎么做!

y=[a ...
   a + b ...
   a + b + c ...
   a + b + c + b ...
   a + b + c + b + c ...
   a + b + c + b + c + b ...
   a + b + c + b + c + b + c];

其中, a,b,c都是预定义的值。 我希望这个循环运行'n'次。

2 个答案:

答案 0 :(得分:1)

如果要在循环中构造此类向量,请尝试以下操作:

v = zeros(n, 1);
for i=1:n
    if (i==1)
        v(i) = a;
    elseif (mod(i,2)==0)
        v(i) = v(i-1)+b;
    else
        v(i) = v(i-1)+c;
    end
end

或者,不使用循环,如下:

v=[a,repmat([b,c],[1,(n-1)/2])];
v=cumsum(v)';

答案 1 :(得分:1)

您不需要循环。要获取每次迭代时添加的元素,请使用:

n=30 %size
v=[a,repmat([b,c],[1,(n-1)/2])];

然后使用累积总和:

v=cumsum(v);