Savitzky-Golay 滤波平滑与n阶导数系数的推导

一组 $2m + 1$ 个连续值通过n次多项式($n < 2m + 1$)确定最佳均方拟合。该多项式的形式如下:

$$f_i = \sum_{k=0}^{k=n}b_{nk}i^k = b_{n0} + b_{n1}i + b_{n2}i^2 + … + b_{nn}i^n$$

该多项式的导数为:

$$\frac{df_i}{di} = b_{n1} + 2b_{n2}i + 3b_{n3}i^2 + … + nb_{nn}i^{n-1}$$

$$\frac{d^2f_i}{di^2} = 2b_{n2} + 3 \times 2 b_{n3}i + … + n(n - 1)b_{nn}i^{n - 2}$$

$$\frac{d^nf_i}{di^n} = n!b_{nn}$$

注意,在所考虑的坐标系中,i的值在-m到+m的范围内,且对于 $2m +1$ 个值的集合,$i = 0$ 在中心。因此,此时8阶导数的值由下式给出:

$$\bigl( \frac{d^8f_i}{di^8} \bigr)_ {i = 0} = 8!b_{n8} = a_{n8}$$

其中,

$$f_0 = b_{n0} = a_{n0}$$

$$\frac{df_0}{di} = b_{n1} = a_{n1}$$

$$\frac{d^2f_0}{di^2} = 2b_{n2} = a_{n2}$$

最小平方准则要求观测值$y_i$和计算值$f_i$之间差值的平方和,在所考虑的区间内,为最小值。

$$\frac{\partial}{\partial b_{nk}} \bigl [ \sum_{i = -m}^{i = m}(f_i - y_i)^2 \bigr ] = 0$$

关于$b_{n0}$最小化,我们有

$$\frac{\partial}{\partial b_{n0}} \bigl [ \sum_{i = -m}^{i = m} (b_{n0} + b_{n1} i + … + b_{nn}i^n - y_i)^2\bigr ] = 2 \sum_{i = -m}^{i=m} (b_{n0} + b_{n1}i + … + b_{nn}i^n - y_i) = 0$$

关于$b_{ni}$最小化,我们有

$$\frac{\partial}{\partial b_{ni}} \bigl[ \sum_{i=m}^{i=-m} (b_{n0} + b_{n1}i + … + b_{nn}i^n -y_i)^2 \bigr] = 2 \sum_{i=-m}^{i=m}(b_{n0} + b_{n1}i + … + b_{nn}i^n - y_i) i = 0$$

关于$b_{nr}$最小化,我们可得

$$2\sum_{i = -m}^{i = m} \bigl[ (\sum_{k = 0}^{k = n}b_{nk}i^k) - y_i \bigr] i^r = 0$$

或者

$$\sum_{i=-m}^{i=m}\sum_{k=0}^{k=n} b_{nk}i^{k+r} = \sum_{i=-m}^{i=m}y_ii^r$$

其中r是代表从0到n的方程数的索引(有n+1个方程)。左侧的求和可以互换,亦即,

$$\sum_{i=-m}^{i=m}\sum_{k=0}^{k=n} b_{nk}i^{k+r} = \sum_{k=0}^{k=n}\sum_{i=-m}^{i=m}b_{nk}i^r$$

最后,由于$b_{nk}$是独立于i的,

$$\sum_{k=0}^{k=n}b_{nk}\sum_{i=-m}^{i=m}i^{k+r} = \sum_{i=-m}^{i=m}y_ii^r = F_k$$

或者,

$$\sum_{k=0}^{k=n}b_{nk}S_{r+k} = F_k$$

其中,

$$S_{r+k} = \sum_{i=-m}^{i=m}i^{r+k} \tag {Vc}$$

$$F_k = \sum_{i=-m}^{i=m} i^k y_i$$

请注意,对于r+k为奇数时,$S_{r+k} = 0$。因为$S_{r+k}$只存在于r+k为偶数,所以n+1个方程的集合可以分成两组,一组用于k为偶数,一组用于奇数。因此,对于5次多项式,其中$n=5$

$$S_0b_{50} + S_2b_{52} + S_4b_{54} = F_0$$

$$S_2b_{50} + S_4b_{52} + S_6b_{54} = F_2 \tag {VIa}$$

$$S_4b_{50} + S_6b_{52} + S_8b_{54} = F_4$$

可用来解$b_{50}$、$b_{52}$和$b_{54}$,而

$$S_2b_{51} + S_4b_{53} + S_6b_{55} = F_1$$

$$S_4b_{51} + S_6b_{53} + S_8b_{55} = F_3 \tag {VIb}$$

$$S_6b_{51} + S_8b_{53} + S_10b_{55} = F_5$$

可用来解$b_{51}$$b_{53}$$b_{55}$。式VIa方程组与n=4的情况具有相同的形式,所以,$b_{40} = b_{50}$$b_{42}=b_{52}$$b_{44} = b_{54}$而方程组VIb与n=5具有相同的形式,所以,$b_{51} = b_{61}$$b_{53} = b_{63}$$b_{55}=b_{65}$。换言之,$b_{ns} = b_{n+1, s}$,若n与s都是偶数,或者都是奇数。例如,为了确定三次(或四次)曲线的三阶导数的最佳拟合,我们有:

$$S_2b_{31} + S_4b_{33} = F_1$$

$$S_4b_{31} + S_6b_{33} = F_3$$

$$b_{33} = \frac{S_2F_3 - S_4F_1}{S_2S_6 - {S_4}^2}$$

例如,当m = 4(2m + 1 = 9点)时,从式Vc得到

$$S_2 = 60, \quad S_4=708, \quad S_6=9780$$

$$b_{33} = \frac{60F_3 - 708F_1}{60(9780) - 708^2} = \frac{F_3 - 7F_1}{7128}$$

$$\frac{-14y_{-4} +7y_{-3} + 13y_{-2} + 9y_{-1} + 0y_0 - 9y_1 - 13y_2 -7y_3 + 14y_4}{1188}$$

$y_i$的系数构成一个三次多项式的三阶导数的卷积整数,该三次多项式是由最小二乘拟合9点确定。因为a33的值是3!b23,上述表达式中的分母必须除以6,才能得到198这个归一化因子。

在所有上述推导中,假设采样间隔与绝对横坐标间隔相同,也即,$\Delta x = 1$。否则,$\Delta x$的值必须包含在归一化过程中。因此,为了在一组m个值的中心点计算s阶导数,基于n次多项式拟合,我们必须计算

$$a_{nsm} = s!b_{nsm} = \frac{\sum_{i=-m}^{i=m} C_{ism}y_i}{\Delta^s N_{sm}}$$

请注意,由于$\Delta x^0 = 1$,在平滑的情况下,时间间隔无关紧要。

本文节选自:Savitzky A, Golay M J E. Smoothing and differentiation of data by simplified least squares procedures[J]. Analytical chemistry, 1964, 36(8): 1627-1639.