Savitzky-Golay滤波器 推导整理

Savitzky-Golay滤波器 推导整理

背景:

最近遇到传感器分辨率导致的噪音问题,这会直接影响到卡尔曼滤波的过程误差。这里选择采用Savitzky-Golay滤波器进行平滑处理。想着推导一下,更好的理解这个算法。

基础:

数字滤波器,卷积,QR分解,向量投影


Part1 最小二乘估计

Savitzky-Golay 滤波器的本质是基于最小二乘估计的有限数字滤波器。

最小二乘结构:

现有数据: X=[x_{1};x_{2};...;x_{m}] , Y=[y_{1};y_{2};...;y_{m}]

曲线拟合: Y\equiv X\theta (矛盾方程组)

拟合目标:寻找拟合参数 \theta ,使拟合误差最小。 arg \min_{\theta}{\left| \left| X\theta-Y \right| \right|_{2}}

用线性方程组和矩阵表示为:

写到这里,我们的运算过程为:矩阵 x 向量 = 向量

这里机智的小伙伴会发现,这不就是向量投影嘛:

最小二乘估计变为:构建高维欧几里得空间,将向量Y进行投影,并使误差向量e的模最小。

这里定义A为列满秩实矩阵,那么根据上一篇QR分解文章有以下结论:

\hat{Y}=A\theta=A(A^{T}A)^{-1}A^{T}Y

A=QR

\theta=\left[ (QR)^{T}QR \right]^{-1}(QR)^{T}Y=R^{-1}Q^{T}Y

\hat{Y}=QQ^{T}Y

e=(I-QQ^{T})Y

%% Additional, Complexity level is 2mn^{2} flops

% QR factorization: 2mn^{2} flops

% Q^{T}Y product: 2mn flops

% R\theta=Q^{T}Y back substitution: n^{2} flops


Part2 Savitzky-Golay滤波器

Savitzky-Golay 滤波器的本质是基于最小二乘估计的有限数字滤波器。

取一段长度为2M+1的数字信号, 转移时间轴为中间位置:

采样时间: x=[-M;...;0;...;M]

信号幅值(后验): Y=[y[-M];...;y[0];...;y[M]]

以N次多项式进行曲线拟合:

拟合关系:\hat{Y}= A\theta

参数向量 \theta\theta=[\theta_{0};...;\theta_{N}]

欧几里得高维空间矩阵A: A=[x.^{0},x.^{1},...,x.^{N}] (见图1)

估计向量(先验): \hat{Y}=[\hat{y}[-M];...;\hat{y}[0];...;\hat{y}[M]]

估计向量中的元素: \hat{y}[n]=\theta_{0}(x[n])^{0}+...+\theta_{N}(x[n])^{N}

现在Recall Part1 向量投影知识:

误差向量 e=Y-A\theta 与空间矩阵A垂直时,e的模长最小,那么有: e\bot A

根据向量点积概念,有: A^{T}(Y-A\theta)=0 ,即 \theta=(A^{T}A)^{-1}A^{T}Y

那么我们对信号Y的先验估计为: \hat{Y}= A\theta=A(A^{T}A)^{-1}A^{T}Y

其中 A(A^{T}A)^{-1}A^{T} 为投影矩阵,这里记为P

那么对信号Y的先验估计可以简写为: \hat{Y}=PY

Y的先验估计有2M+1个,但现在只用x=0的估计数据:

降阶观测:\hat{y}[0]=P_{0th -row}*Y , 其中 P_{0th -row} 为投影矩阵P的‘第0行’

改写为: \hat{y}[0]=\sum_{x=-M}^{M}{p_{0,x}}*y[x] (1)

这里机智的小伙伴又发现了, 怎么这么像卷积呢?

数字卷积: \hat{y}[n]=\sum_{x=n-M}^{n+M}{h[n-x]y[x]} (2)

n取0时,(1)与(2)相等,那么有: h[-x]=p_{0,x}-M\leq x\leq M

我们的卷积核就出来啦~

以上,就是Savitzky-Golay滤波器,是不是很简单呢~

发布于 2022-06-30 23:47