任何人都可以提出一种方法,其中可以根据预定序列对向量执行操作 - 例如,我具有不同值的向量M,其为&lt; 8760x1&gt;在尺寸方面。我有另一个带有数字序列P的矢量(大小<300x1>),此序列总和为8760.我想使用这些P值来索引矢量M并找到每个索引的乘积。
使这一点更清晰的一个例子:
M = [1,2,4,2,3,4,5,3,4,2];
P = [2,2,4,2];
结果= [3,6,15,6]
非常感谢任何帮助。
Peter.S。
答案 0 :(得分:1)
这是一种基于acummarray的方法,以及使用cumsum制作索引向量的巧妙方法。给出两个向量:
M = [1,2,4,2,3,4,5,3,4,2];
P = [2,2,4,2];
在P
中创建每个频率值的唯一索引向量(在此SO后发布):
numM = sum(P);
index = zeros(numM, 1);
index(cumsum([1 P(1:end-1)])) = 1;
index = cumsum(index);
>> index'
ans =
1 1 2 2 3 3 3 3 4 4
使用构造的索引向量和值向量来应用accumarray()
:
result = accumarray(index, M);
>> result'
ans =
3 6 15 6