的指標。如果我用這個語法:變化的陣列或矩陣
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));
爲什麼不的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 –