首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组或矩阵的索引的变化

问数组或矩阵的索引的变化
EN

Stack Overflow用户
提问于 2017-07-04 10:12:49
回答 2查看 51关注 0票数 0

如果我使用这个语法:

代码语言:javascript
复制
mX=[1:5];
A=rand(5,1);
C(mX)=sum(A(1:mX));

为什么C(mX)的内容不随mX的变化而变化

而不是做

代码语言:javascript
复制
C(1)=A(1) 
C(2)=A(1)+A(2), etc

它确实:

代码语言:javascript
复制
C(1)=A(1)
C(2)=A(1)
C(3)=A(1), etc

有没有任何方法可以改变C(mX)而不诉诸循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-04 10:23:23

要回答你的第一个问题:

代码语言:javascript
复制
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中提到的那样

代码语言:javascript
复制
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,您可以这样做

代码语言:javascript
复制
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);
票数 2
EN

Stack Overflow用户

发布于 2017-07-04 10:19:50

您可以通过cumsum这样做:

代码语言:javascript
复制
mX=[1:5];
A=rand(5,1);
C = cumsum(A(mX));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44903131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档