如何使用Savitzky Golay滤波器在离散采样的1D信号中找到局部最大值(在采样之间)?
我有一个地震信号y(i): 在这里,我找到了一个最大值:手动将i = 152.54,y = 222.29绘制为红色。 我想自动查找所有最大值。 我读到,Savitzky Golay滤波器(SGF)可用于找到信号及其导数的平滑估计,并且SGF的好处之一是它比其他滤波器更好地保留了最小值和最大值。这对我来说听起来很棒。 我发现了一个生成SGF系数的Matlab脚本。 并以此发现导数的四阶SGF系数。我编写了一个小的Matlab脚本 通过将信号与导数的4阶SGF系数进行卷积来找到信号的导数 查找导数更改符号的样本对(i,i + 1) 通过i和i + 1之间的线性插值找到导数的零交叉 脚本: function [maxX,maxY] = findLocalMax(y) % Kernel for 4th order Savitzky-Golay filter for finding derivative: d4 = [0.0724 -0.1195 -0.1625 -0.1061 0 0.1061 0.1625 0.1195 -0.0724]; dy = conv(y,d4,'same'); % derivative [m …