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