如何使用Savitzky-Golay平滑系数来计算导数

Lin*_*ang 7 c++ smoothing derivative

Savitzky-Golay平滑滤波器可用于计算系数,以便通过将系数应用于相邻值来计算平滑的y值.平滑的曲线看起来很棒.

根据论文,系数也可用于计算高达5阶的导数.系数计算参数ld需要设置为导数的顺序.对于一阶导数,适当的设置是ld = 1,导数的值是累加的和除以采样间隔h.

我的问题是:如何使用获得的系数来计算累计和?衍生物是如何计算的?任何示例代码?

Lin*_*ang 4

要使用 Savitzky-Golay 平滑滤波器计算导数,多项式系数计算有一个参数 b,值 b[derivative] 必须设置为 1.0,数组 be 将在 LU 分解调用中使用。

正确求导的关键是理解多项式公式:Y = a0 + a1 * z + a2 * z^2 + ... + ak * z^k。a0, a1, a2, ..., ak 值实际上是移动窗口内的平滑值,z = (x - x0) / h,对于移动窗口的中心点,我们可以假设 z = 0,因为 x = x0。

因此,在导数计算中:

dY/dx = a1/h; and d2Y/dx2 = 2a2/h^2.
Run Code Online (Sandbox Code Playgroud)

其中a1、a2是使用相应导数计算的系数对y进行平滑的值。