Может ли кто-нибудь предложить способ, которым можно выполнять операции над вектором в соответствии с заданной последовательностью - например, у меня есть вектор разных значений, M, который равен < 8760x1> в размере. У меня есть еще один вектор с последовательностью чисел, P, (размер < 300x1>), и эта последовательность суммируется до 8760. Я хотел бы использовать эти значения P для индексации вектора M и найти произведение каждого индекса.Разделить вектор в соответствии с определенной последовательностью
В качестве примера, чтобы сделать это более ясным:
М = [1,2,4,2,3,4,5,3,4,2];
P = [2,2,4,2];
Result = [3,6,15,6]
Любая помощь здесь будет весьма признателен.
Peter.S.
Я не понимаю, что вы хотите сделать. Чтобы использовать P в качестве индекса для M, используйте M (P). Это даст вам [2, 2, 2, 2] в вашем примере. Откуда появился продукт? – Molly
Извинения Я неправильно использовал термин index. Я хотел найти Result, который дает значение 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
Для этого можно использовать следующие коды: 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) = сумма (M (id1 (k): id2 (k))); конец % или id2 = cumsum (P); id1 = [1 id2 (1: end-1) +1]; Результат = массивfun (@ (x, y) sum (M (x: y)), id1, id2) – user2105201