2016-04-30 63 views
0

我有一個波形,我已經用一個標準確定了一個特定的點(下圖中的綠星)。我現在想要自動找到此點右側下一個峯(可能是最大值或最小值)的位置(例如,下圖中的紅色圓圈,在這種情況下,它是最小值)。請注意,我將在多個波形上運行此操作,這些波形具有不同的峯高/噪聲含量。用MATLAB找到一個點的最近的峯值

試過功能findpeaks(),但不能真正讓它工作!任何幫助將不勝感激。

example waveform

答案後可進行編輯從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 

然後看看哪個峯值最接近。反轉信號中的峯值當然表示最小值。

+1

謝謝!它不適用於你的公式中的倒置信號。然而,當我只是接受我的信號(-original_signal)的負面信號時,它似乎運作良好。任何線索? – user3406207

+0

如果有效,請使用它。然後接受他的回答:-) – tim

+0

很難說。如果您可以分享您的代碼和信號,這將有所幫助。 – Amal

相關問題