变化的阵列或矩阵
问题描述:
的指标。如果我用这个语法:变化的阵列或矩阵
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)
不诉诸一个循环?
答
要回答你的第一个问题:
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)
值将纯粹填充元素A(1)
。
你想要做的是使一个累积和,这是可以做到,因为@leanderMoesinger与cumsum
提到:
A=rand(5,1);
C = cumsum(A)
C =
0.0975
0.3760
0.9229
1.8804
2.8453
如果您想了解更多关于索引我强烈推荐以下职位:Linear indexing, logical indexing, and all that
如果你不想要所有的元素A
,但例如最多元素你们三个可以做
mX = 1:3;
A = rand(5,1);
C = cumsum(A(mX)); calculate only to mX
mX = [1 3 5];
C = cumsum(A(mX)) % Also works if you only want elements 1 3 and 5 to appear
% If you want elements of C 1 3 and 5 use
tmp = cumsum(A);
C = tmp(mX);
我认为你正在寻找'cumsum':https://ch.mathworks.com/help/matlab/ref/cumsum.html –