Нахождение локальных минимумов по обе стороны от максимумов в матрице в Matlab - PullRequest
0 голосов
/ 14 ноября 2018

Для обработки некоторых «больших данных». При нанесении на график мои данные являются знаковыми волнами, но со случайными пиками. (Итак, представьте, что вы наносите на график значение каждой позиции матрицы относительно ее положения)

Я знаю, как найти пики, но мне нужен способ затем найти значение локальных минимумов по обе стороны от пиков и положение в матрице. Например, если данные были:

3 2 1 0 1 2 3 7 -4 -5 -6 -5 -4 0

Функция, которая мне нужна, будет возвращать что-то вроде: min, loc = [0, -6; 4, 11]

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

MATLAB R2007a и новее имеют функцию, называемую findpeaks (для которой требуется инструментарий обработки сигналов). Синтаксис, который вы ищете:

[pks,locs] = findpeaks(data)

В частности,

>> [pks,locs] = findpeaks(-[3 2 1 0 1 2 3 7 -4 -5 -6 -5 -4 0]) % note it's "-[data]"

pks =
     0     6
locs =
     4    11

Минус в том, что нам нужны "долины", а не "пики", поэтому убедитесь, что вы не забыли опровергнуть pks впоследствии.

0 голосов
/ 14 ноября 2018

Если у вас есть доступ к R2017b или новее, проверьте функции islocalmax и islocalmin .

...