如果我使用这个语法:
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)而不诉诸循环?
发布于 2017-07-04 10:23:23
要回答你的第一个问题:
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的所有元素,但是例如,最多需要元素3,您可以这样做
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);发布于 2017-07-04 10:19:50
您可以通过cumsum这样做:
mX=[1:5];
A=rand(5,1);
C = cumsum(A(mX));https://stackoverflow.com/questions/44903131
复制相似问题