Найти ближайшую вершину в точке с помощью MATLAB

У меня есть форма волны, в которой я определил конкретную точку (зеленая звезда на графике ниже) с помощью критериев. Теперь я хотел бы найти местоположение следующей вершины (это может быть максимум или минимум) справа от этой точки (например, красный круг на графике ниже, в данном случае это минимумы) автоматически. Обратите внимание, что я буду запускать это на нескольких сигналах с разной высотой пиков / содержанием шума.

Пробовал функцию findpeaks() но не могу заставить его работать! Любая помощь будет оценена.

пример формы волны

Отредактировано после ответа от user3288586 Новый код, работающий:

prominence_factor = 0.1 
[peakPos , locPos] = findpeaks (signal,time,'Npeaks',1,'MinPeakProminence', prominence_factor);
[peakNeg, locNeg] = findpeaks (-signal,time, 'Npeaks', 1, 'MinPeakProminence', prominence_factor);

1 ответ

Решение

Вы можете запустить findpeaks дважды. Сначала с исходным сигналом, а затем с инвертированным сигналом. Чтобы инвертировать сигнал, вы можете сделать это:

inverted_signal = 2*mean(original_signal) - original_signal

Затем посмотрите, какая вершина самая близкая. Пики в инвертированном сигнале, конечно, будут обозначать минимумы.

Другие вопросы по тегам