Matlab 循环将当前状态与以前的状态相加

Matlab 循环将当前状态与以前的状态相加,matlab,loops,Matlab,Loops,我想做一个循环,以便将当前状态与前一个状态相加 例如: M=1000; for i=1:M A=i*(x(i)); 此公式适用于M=1,但当M=2时,公式如下: A=(i*(x(i))+((i-1)*(x(i-1))) 当M=3时,公式为 A=(i*(x(i))+((i-1)*(x(i-1)))+((i-2)*(x(i-2)) 以此类推,直到达到最大长度M,即1000您的问题相当模糊,但听起来您只需要i*x(i)系列的累积和: 这还不清楚。请提供一个小向量(例如4个元素左右)的工作示例,

我想做一个循环,以便将当前状态与前一个状态相加

例如:

M=1000; 
for i=1:M A=i*(x(i));
此公式适用于
M=1
,但当
M=2
时,公式如下:

A=(i*(x(i))+((i-1)*(x(i-1)))
M=3
时,公式为

A=(i*(x(i))+((i-1)*(x(i-1)))+((i-2)*(x(i-2))

以此类推,直到达到最大长度
M
,即
1000

您的问题相当模糊,但听起来您只需要i*x(i)系列的累积和:


这还不清楚。请提供一个小向量(例如4个元素左右)的工作示例,将输入和输出添加到您的问题中。我认为
sum(s)
是他要求的。但因为他的问题很古怪,我不确定。也许你应该加上解释什么导致了什么。无论如何,很好的解决方案谢谢亲爱的丹的回答。我的问题是,我想把第一轮循环的和加上第二轮循环的和,然后把第一轮和第二轮循环的和加上第三轮循环的和,依此类推,直到循环结束。@user3725170这正是它的作用。除非你添加一个有效的例子,否则我无法告诉你还需要什么。非常感谢Dan的帮助,我非常感谢你的回答。现在我在尝试访问x(2)时遇到了这个错误;索引超出范围,因为numel(x)=1。@Rock
numel(x)
必须是
M
或更大,否则整个过程毫无意义!如果
x
是一个标量,那么如何定义
x(i-1)
i = 1:M;
s = i.*x(i);

cumsum(s);