/ / Субстрактиращи матрични термини [дубликат] - MATLAB

Извличане на матрични термини [дубликат] - matlab

На 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 запълване.

Надявам се това да ви помогне малко. лястовица