2016-04-30 104 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