scipy.signal.savgol_coeffs

scipy.signal.savgol_coeffs(window_length, polyorder, deriv=0, delta=1.0, pos=None, use='conv')[源代码]

计算一维萨维茨基-格雷冷杉过滤的系数。

参数
window_length集成

过滤窗口的长度(即系数数)。 window_length 必须是奇数正整数。

polyorder集成

用于拟合样本的多项式的阶数。 polyorder 必须小于 window_length

deriv整型,可选

要计算的导数的顺序。这必须是非负整数。默认值为0,表示对数据进行过滤,不做区分。

delta浮动,可选

将应用过滤的样本的间距。仅当Deriv>0时才使用此选项。

pos整型或无型,可选

如果pos不是NONE,则指定窗口内的评估位置。默认值为窗口中间。

use字符串,可选

‘conv’或‘dot’。此参数选择系数的顺序。缺省值是‘conv’,这意味着对系数进行排序,以便在卷积中使用。使用use=‘dot’时,顺序是颠倒的,所以过滤是通过用数据集给系数加点来应用的。

退货
coeffs一维ndarray

过滤系数。

参见

savgol_filter

注意事项

0.14.0 新版功能.

参考文献

A.Savitzky,M.J.E.Golay,用简化的最小二乘法对数据进行平滑和微分。分析化学,1964,36(8),1627-1639页。

示例

>>> from scipy.signal import savgol_coeffs
>>> savgol_coeffs(5, 2)
array([-0.08571429,  0.34285714,  0.48571429,  0.34285714, -0.08571429])
>>> savgol_coeffs(5, 2, deriv=1)
array([ 2.00000000e-01,  1.00000000e-01,  2.07548111e-16, -1.00000000e-01,
       -2.00000000e-01])

请注意,use=‘dot’只是将系数反转。

>>> savgol_coeffs(5, 2, pos=3)
array([ 0.25714286,  0.37142857,  0.34285714,  0.17142857, -0.14285714])
>>> savgol_coeffs(5, 2, pos=3, use='dot')
array([-0.14285714,  0.17142857,  0.34285714,  0.37142857,  0.25714286])

x 包含抛物线x=t**2的数据,在t=-1,0,1,2,3处采样。 c 保存将在最后位置计算导数的系数。当点缀有 x 结果应该是6。

>>> x = np.array([1, 0, 1, 4, 9])
>>> c = savgol_coeffs(5, 2, pos=4, deriv=1, use='dot')
>>> c.dot(x)
6.0