斯戈莱
Savitsky-Goley滤波器的计算。
库::`工程师`
例子:
使用Savitsky-Goley方法平滑噪声正弦
Details
我们将产生一个信号,代表一个频率为 0.2 Hz,以每秒五次的采样率将白高斯噪声添加到其中。 200 几秒钟。
import EngeeDSP.Functions: randn, sgolay,conv
dt = 1/5
t = (0:dt:200-dt)'
x = 5*sin.(2*pi*0.2*t) + randn(1, length(t))
我们使用 *sgolay* 来平滑信号。 我们使用框架从 21 计数和第四度的多项式。
order = 4
framelen = 21
b,g = sgolay(order,framelen)
通过与向量的中间行卷积来计算信号的稳态部分 b.
ycenter = conv(x,b[Int((framelen+1)/2), :],"valid")'
让我们计算瞬态。 我们使用矩阵的最后一行 b 开始和矩阵的第一行 b 完成。
ybegin = b[end:-1:Int((framelen+3)/2), :] * x[framelen:-1:1]
yend = b[Int((framelen-1)/2):-1:1, :] * x[end:-1:end-(framelen-1)]
让我们将信号的瞬态和稳态部分结合起来,得到一个完整的平滑信号。 让我们绘制原始信号和使用Savitsky—Goley方法平滑的信号。
y = [ybegin; ycenter; yend]
plot(x', label = "Noisy Sinusoid")
plot!(y, label = "S-G smoothed sinusoid")

Savitsky-Goley过滤器与尺度
Details
让我们设计一个具有多项式的Savitsky—Goley平滑滤波器 5`以过滤频率为 `8192 赫兹。 我们用汉明窗。 帧长度为 101 倒计时。
import EngeeDSP.Functions: hamming, freqz, sgolay
Fs = 8192
m = 5
fl = 101
weights = hamming(fl)
b,g = sgolay(m,fl,weights)
我们来构造中心线的频率响应 b. 我们使用 1024 FFT点。
NFFT = 1024
b=b[Int((fl+1)/2), :]
freqz(b',1,NFFT,Fs,out=:plot)

萨维茨基至戈利航线
Details
我们将产生一个信号,代表一个频率为 0.2 Hz,其中白高斯噪声被添加,以每秒四次的采样率在 20 几秒钟。
import EngeeDSP.Functions: randn, sgolay,conv
dt = 0.25
t = (0:dt:20-1)'
x = 5*sin.(2*pi*0.2*t) + 0.5*randn(1, length(t))
让我们使用Savitsky—Goley方法评估正弦波的前三个导数。 我们使用 25-点窗口和五阶多项式。 让我们将列划分为度 dt的 以正确缩放导数。
b,g = sgolay(5,25)
dx = zeros(length(x), 4)
for p in 0:3
kernel = factorial(p) / (-dt)^p * g[:, p+1]
dx[:, p+1] = conv(x, kernel, "same")
end
让我们绘制原始信号,平滑序列和导数。
plot(x', marker = :., label = "x")
plot!(dx, label = ["x (smoothed)" "x'" "x''" "x'''"])
title!("Savitzky-Golay Derivative Estimates")

算法
Savitsky-Goley滤波器用于平滑具有较大频率范围的噪声信号。 Savitsky-Goley平滑滤波器通常比标准FIR平均滤波器滤除信号的高频内容更少。 然而,当噪声电平特别高时,它们在抑制噪声方面的效果较差。
一般而言,滤波包括用包含在以该点为中心的滑动窗口中的信号值的某种组合来替换每个信号点,基于附近点测量几乎相同的基值的假设。 例如,移动平均滤波器将每个数据点替换为周围数据点的局部平均值。 如果数据点有 左边的点和 右边的点,表示窗口的总长度 ,则移动平均滤波器进行替换
Savitsky-Goley滤波器通过使用最小二乘法近似阶多项式来推广这个想法。 到窗口中信号的值,并将计算得到的多项式曲线中心点作为新的平滑数据点。 对于给定的点
或者,就矩阵而言,
为了找到Savitsky-Goley估计值,我们使用pseudoinversion
为了避免不良调理,功能 *sgolay* 使用QR分解计算经济分解
计算方法
文学作品
-
Orfanidis,Sophocles J.Introduction To Signal Processing. 恩格尔伍悬崖,新泽西州:Prentice Hall,1996。
-
Press,William H.,Saul A.Teukolsky,William T.Vetterling和Brian P.Flannery。 C:科学计算的艺术。 繝シ繝ォ縺ァ縺呐
-
Schafer,Ronald W."What_Is_A Savitzky-Golay Filter? [讲义]。"_IEEE信号处理杂志_卷。 28,第4号,2011年7月,第111-117页。 https://doi.org/10.1109/MSP.2011.941097.