在看到多项式回归将不同程度的多项式函数拟合到时间序列后,我有这个问题,因为时间序列的平均值是常数,并且常数也是 0 次多项式我想知道 SG 过滤器是否也将多项式函数拟合到一个周期窗口上的信号可以称为移动平均线。
那么,将尝试将 0 阶多项式拟合到信号的 Savitsky-Golay 滤波器被视为移动平均滤波器是否正确?
在看到多项式回归将不同程度的多项式函数拟合到时间序列后,我有这个问题,因为时间序列的平均值是常数,并且常数也是 0 次多项式我想知道 SG 过滤器是否也将多项式函数拟合到一个周期窗口上的信号可以称为移动平均线。
那么,将尝试将 0 阶多项式拟合到信号的 Savitsky-Golay 滤波器被视为移动平均滤波器是否正确?
是的,您可以将零阶(或一阶)SG 滤波器视为移动平均滤波器。下面的 MATLAB / Octave 代码计算阶和长度的 SG 滤波器的脉冲响应:
% Savitzky-Golay Filter
%
clc; clear all; close all;
N = 0; % a0,a1,...,aN : Nth order polynomial
M = 3; % x[-M],...,x[M] : 2M + 1 data
A = zeros(2*M+1,N+1);
for n = -M:M
A(n+M+1,:) = n.^[0:N];
end
H = (A'*A)^(-1)* A'; % LSE fit matrix
h = H(1,:); % S-G filter impulse response (non-causal symmetric FIR)
figure,subplot(2,1,1)
stem([-M:M],h);
title(['Impulse response h[n] of Savitzky-Golay filter of order N = ' num2str(N), ' and window size 2M+1 = ' , num2str(2*M+1)]);
subplot(2,1,2)
plot(linspace(-1,1,1024), abs(fftshift(fft(h,1024))));
title('Frequency response magnitude of h[n]');
figure,plot(linspace(-1,1,1024), 20*log10(abs(fftshift(fft(h,1024)))));
title('Frequency response magnitude of h[n]');
的脉冲响应为:
可以看出,这是一个移动平均(恒定)脉冲响应。