1
任何人都可以提出一种方法,可以根据预定的顺序在一个向量上执行操作 - 例如我有一个向量不同的值M,它是< 8760x1>在尺寸方面。我有另一个具有数字序列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。
我不明白你想要做什么。使用P作为M的索引使用M(P)。这会在你的例子中给你[2,2,2,2]。产品从哪里来? – Molly 2013-03-24 23:27:33
道歉我已经错误地使用了术语索引。我想找到给出M(1,1)+ M(1,2)= 3的值的结果,然后M(1,3)+ M(1,4)= 6,则M(1,5) + M(1,6)+ M(1,7)+ M(1,8)= 15和M(1,9)+ M(1,10)= 6。 – user2105201 2013-03-24 23:39:58
下面的代码可以用来解决这个问题:M = [1,2,4,2,3,4,5,3,4,2]; P = [2,2,4,2]; id2 = cumsum(P); id1 = [1 id2(1:end-1)+1];对于k = 1, :numel(id1) 结果(k)= sum(M(id1(k):id2(k))); end %or id2 = cumsum(P); id1 = [1 id2(1:end-1)+1]; 结果= arrayfun(@(x,y)sum(M(x:y)),id1,id2) – user2105201 2013-03-24 23:47:58