На MATLAB: Имам вектор P. Искам да запазя стойностите P (k + 1) - P (k) в нов вектор М. Мога да го направя с for loop, но има ли нещо по-ефективно (имам огромен вектор).
Отговори:
1 за отговор № 1Както каза Марчин, използвайте diff
, За 1D вектор, diff(a)
, За разликата по dim 1, diff(a,[],1)
, Заедно с dim 2, използвайте diff(a,[],2)
.
1 за отговор № 2
Обикновено решение
Разлика = V (2: n) - V (1: n-1) където п е размерът на Vector V;
п = размер (V, 1);
-1 за отговор № 3
Мисля, че е по-лесно просто да направите своявектор P, след това го дублира и измести малко. Ако направите вектора Pk (вашият редовен P вектор, но по-горе) и след това направете Pk + 1 (нека го наричаме Pkp1) и я поставете по-долу.
Pk = [0 P];
Pkp1 = [P 0];
M = Pkp1 - Pk
Това я прави елементарна матрична операция, която винаги е по-бърза от цикъла. Ако рекурсивният ви алгоритъм изисква това, можете да промените до 0 запълване.
Надявам се това да ви помогне малко. лястовица