2014-12-06 3 views
-2

Я решаю функцию, которая использует фильтр скользящей средней для удаления шума. Как определить индекс и значение первого и второго отрицательного пика после применения фильтра для ввода данных?определить индекс и значение первого отрицательного пика

ответ

1

Используйте findpeaks на отрицательных ваших данных, затем извлеките первые два элемента, чтобы извлечь первый и второй индексы, где расположены отрицательные пики. Предположим, ваш сигнал был сохранен в f, вы бы просто сделать:

[peaks, locs] = findpeaks(-f); 
p = peaks(1:2); 
loc = locs(1:2); 

findpeaks работы по поиску локальных максимумов. Если вы хотите найти локальные минимумы (т. Е. Отрицательные пики), вы применяете findpeaks к отрицательному значению вашего сигнала, чтобы локальные минимумы становились локальными максимумами, а затем применяли тот же алгоритм. loc будет содержать первые два местоположения, где находятся отрицательные пики, тогда как p определит эти отрицательные амплитуды пиков.

Однако вам, вероятно, придется поиграть с входными параметрами до findpeaks, вместо того, чтобы использовать по умолчанию для ваших данных, но этого должно быть достаточно, чтобы вы начали.


Sidenote

Если у вас нет доступа к findpeaks, посмотрите на this post that I wrote to find peaks for FFT data. Данные разные, но общая логика одна и та же. Однако это находит все пики - как локальные максимумы, так и минимумы. Если вы просто хотите найти минимумы, просто посмотрите на отрицательный сигнал, а не на абсолютное значение.

Смежные вопросы