数组或矩阵的索引的变化

时间:2017-07-04 10:12:49

标签: arrays matlab matrix cumulative-sum

如果我使用这种语法:

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)

2 个答案:

答案 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));