如果我使用这种语法:
mX=[1:5];
A=rand(5,1);
C(mX)=sum(A(1:mX));
为什么C(mX)
的内容因mX
不同而有所不同?
而不是做
C(1)=A(1)
C(2)=A(1)+A(2), etc
它确实:
C(1)=A(1)
C(2)=A(1)
C(3)=A(1), etc
有没有办法在不诉诸循环的情况下改变C(mX)
?
答案 0 :(得分:2)
回答你的第一个问题:
fetchText()
总和超过mX=1:5;
A=rand(5,1);
C(mX)=sum(A(1:mX));
,结果为A(1:[1 2 3 4 5])
,因此您的所有A(1:1)
值都将仅使用C(mX)
元素填充。
您想要做的是制作一个累积总和,这可以通过@leanderMoesinger提到cumsum
来完成:
A(1)
如果您想了解有关索引的更多信息,我强烈推荐以下帖子:Linear indexing, logical indexing, and all that
如果您不想要A=rand(5,1);
C = cumsum(A)
C =
0.0975
0.3760
0.9229
1.8804
2.8453
的所有元素,例如你可以做到第三个元素
A
答案 1 :(得分:0)
你可以cumsum
这样做:
mX=[1:5];
A=rand(5,1);
C = cumsum(A(mX));