使用 MATLAB 从一个点找到最近的峰
Find the nearest peak from a point with MATLAB
我有一个波形,其中我用一个标准确定了一个特定点(下图中的绿色星号)。我现在想自动找到该点右侧的下一个峰值(可能是最大值或最小值)的位置(例如,下图中的红色圆圈,在这种情况下,它是最小值)。请注意,我将 运行 在多个波形上使用不同的峰值 heights/noise 内容。
尝试了 findpeaks()
功能,但无法真正发挥作用!任何帮助将不胜感激。
在用户 3288586 回答后编辑
新代码,有效:
prominence_factor = 0.1
[peakPos , locPos] = findpeaks (signal,time,'Npeaks',1,'MinPeakProminence', prominence_factor);
[peakNeg, locNeg] = findpeaks (-signal,time, 'Npeaks', 1, 'MinPeakProminence', prominence_factor);
您可以 运行 两次找到峰值。首先是原始信号,然后是反相信号。要反转信号,您可以这样做:
inverted_signal = 2*mean(original_signal) - original_signal
然后看看离哪个峰最近。反相信号中的峰值当然表示最小值。
我有一个波形,其中我用一个标准确定了一个特定点(下图中的绿色星号)。我现在想自动找到该点右侧的下一个峰值(可能是最大值或最小值)的位置(例如,下图中的红色圆圈,在这种情况下,它是最小值)。请注意,我将 运行 在多个波形上使用不同的峰值 heights/noise 内容。
尝试了 findpeaks()
功能,但无法真正发挥作用!任何帮助将不胜感激。
在用户 3288586 回答后编辑 新代码,有效:
prominence_factor = 0.1
[peakPos , locPos] = findpeaks (signal,time,'Npeaks',1,'MinPeakProminence', prominence_factor);
[peakNeg, locNeg] = findpeaks (-signal,time, 'Npeaks', 1, 'MinPeakProminence', prominence_factor);
您可以 运行 两次找到峰值。首先是原始信号,然后是反相信号。要反转信号,您可以这样做:
inverted_signal = 2*mean(original_signal) - original_signal
然后看看离哪个峰最近。反相信号中的峰值当然表示最小值。