Нахождение локальных минимумов по обе стороны от максимумов в матрице в Matlab
Для обработки некоторых "больших данных". При нанесении на график мои данные выглядят как знаковые волны, но со случайными пиками. (Так что представьте себе график зависимости значения каждой позиции матрицы от ее позиции)
Я знаю, как найти пики, но мне нужен способ затем найти значение локальных минимумов по обе стороны от пиков и положение в матрице. Например, если данные были:
3 2 1 0 1 2 3 7 -4 -5 -6 -5 -4 0
Функция, которая мне нужна, будет возвращать что-то вроде: min,loc = [0, -6; 4, 11]
2 ответа
Если у вас есть доступ к R2017b или новее, проверьте функции islocalmax и islocalmin.
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
после этого.