savgol_coeffs#
- scipy.signal.savgol_coeffs(window_length, polyorder, deriv=0, delta=1.0, pos=None, use='conv')[源代码]#
计算一维 Savitzky-Golay FIR 滤波器的系数。
- 参数:
- window_lengthint
滤波器窗口的长度(即系数的数量)。
- polyorderint
用于拟合样本的多项式的阶数。 polyorder 必须小于 window_length。
- derivint, 可选
要计算的导数的阶数。 这必须是一个非负整数。 默认值为 0,表示对数据进行滤波而不进行微分。
- deltafloat, 可选
将应用滤波器的样本的间距。 仅当 deriv > 0 时才使用。
- posint 或 None, 可选
如果 pos 不为 None,则它指定窗口内的评估位置。 默认值为窗口的中间位置。
- usestr, 可选
可以是 'conv' 或 'dot'。 此参数选择系数的顺序。 默认值为 'conv',表示系数按顺序排列以便在卷积中使用。 使用 use='dot' 时,顺序颠倒,因此通过将系数与数据集点乘来应用滤波器。
- 返回:
- coeffs1-D ndarray
滤波器系数。
另请参阅
备注
在版本 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