savgol_coeffs#
- scipy.signal.savgol_coeffs(window_length, polyorder, deriv=0, delta=1.0, pos=None, use='conv')[源代码][源代码]#
计算一维 Savitzky-Golay FIR 滤波器的系数。
- 参数:
- window_length整数
滤波窗口的长度(即,系数数量)。
- polyorder整数
用于拟合样本的多项式阶数。polyorder 必须小于 window_length。
- derivint, 可选
要计算的导数的阶数。这必须是一个非负整数。默认值是0,这意味着不对数据进行微分而直接过滤。
- deltafloat, 可选
滤波器将应用于的样本的间距。仅在 deriv > 0 时使用。
- posint 或 None, 可选
如果 pos 不是 None,它指定窗口内的评估位置。默认值是窗口的中间。
- 使用str, 可选
可以是 ‘conv’ 或 ‘dot’。此参数选择系数的顺序。默认是 ‘conv’,这意味着系数按卷积使用顺序排列。使用 ‘dot’ 时,顺序反转,因此滤波器通过将系数与数据集点积来应用。
- 返回:
- 系数一维 ndarray
滤波器系数。
注释
Added in version 0.14.0.
参考文献
A. Savitzky, M. J. E. Golay, Smoothing and Differentiation of Data by Simplified Least Squares Procedures. Analytical Chemistry, 1964, 36 (8), pp 1627-1639. Jianwen Luo, Kui Ying, and Jing Bai. 2005. Savitzky-Golay smoothing and differentiation filter for even number data. Signal Process. 85, 7 (July 2005), 1429-1434.
示例
>>> import numpy as np >>> 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]) >>> savgol_coeffs(4, 2, pos=3, deriv=1, use='dot') array([0.45, -0.85, -0.65, 1.05])
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