【发布时间】:2013-03-24 22:57:08
【问题描述】:
任何人都可以提出一种可以根据预定顺序对向量执行操作的方法 - 例如,我有一个不同值的向量 M,其大小为 。我有另一个带有数字序列 P 的向量(大小 ),这个序列的总和为 8760。我想使用这些 P 值来索引向量 M 并找到每个索引的乘积。
一个更清楚的例子:
M = [1,2,4,2,3,4,5,3,4,2];
P = [2,2,4,2];
结果 = [3,6,15,6]
我们将不胜感激。
彼得.S.
【问题讨论】:
-
我不明白你想做什么。要使用 P 作为 M 的索引,请使用 M(P)。在您的示例中,这将为您提供 [2, 2, 2, 2] 。产品来自哪里?
-
抱歉,我错误地使用了术语索引。我想找到给出 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。
-
以下代码可以用来解决这个问题:M = [1,2,4,2,3,4,5,3,4,2]; P = [2,2,4,2]; id2=累积和(P); id1=[1 id2(1:end-1)+1];对于 k=1:numel(id1) 结果(k)=sum(M(id1(k):id2(k)));结束 % 或 id2=cumsum(P); id1=[1 id2(1:end-1)+1];结果=arrayfun(@(x,y) sum(M(x:y)),id1,id2)
-
您应该将其添加为答案并接受它,以便可以关闭问题。
标签: matlab vector indexing sequence