scipy.signal.savgol_filter

scipy.signal.savgol_filter(x, window_length, polyorder, deriv=0, delta=1.0, axis=- 1, mode='interp', cval=0.0)[源代码]

将萨维茨基-格雷过滤应用于数组。

这是一维过滤。如果 x 维度大于1, axis 确定沿其应用过滤的轴。

参数
xarray_like

要筛选的数据。如果 x 不是单精度或双精度浮点数组,它将被转换为 numpy.float64 在过滤之前。

window_length集成

过滤窗口的长度(即系数数)。 window_length 必须是正的奇数。如果 mode 是“Interp”, window_length 必须小于或等于 x

polyorder集成

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

deriv整型,可选

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

delta浮动,可选

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

axis整型,可选

数组的轴 x 在此基础上实施“过滤”战略。默认值为-1。

mode字符串,可选

必须是‘镜像’、‘常量’、‘最近’、‘包裹’或‘Interp’。这确定要用于应用过滤的填充信号的分机类型。什么时候 mode 为“常量”,则填充值由 cval 。有关“镜像”、“常量”、“换行”和“最近”的更多详细信息,请参阅注释。当选择“interp”模式(默认)时,不使用任何扩展。取而代之的是,一个学位 polyorder 多项式拟合到最后 window_length 值,此多项式用于计算最后一个 window_length // 2 输出值。

cval标量,可选

值填充到输入的边缘,如果 mode 是“恒定的”。默认值为0.0。

退货
y :ndarray,形状与 xndarray,形状与

过滤后的数据。

参见

savgol_coeffs

注意事项

有关 mode 选项:

“镜像”:

以相反的顺序重复边上的值。不包括最接近边的值。

“最近”:

扩展名包含最接近的输入值。

‘常量’:

扩展包含由 cval 论点。

‘WRAP’:

扩展包含数组另一端的值。

例如,如果输入是 [1、2、3、4、5、6、7、8] ,以及 window_length 为7,下面显示了各种类型的扩展数据 mode 选项(假设 cval 为0):

mode       |   Ext   |         Input          |   Ext
-----------+---------+------------------------+---------
'mirror'   | 4  3  2 | 1  2  3  4  5  6  7  8 | 7  6  5
'nearest'  | 1  1  1 | 1  2  3  4  5  6  7  8 | 8  8  8
'constant' | 0  0  0 | 1  2  3  4  5  6  7  8 | 0  0  0
'wrap'     | 6  7  8 | 1  2  3  4  5  6  7  8 | 1  2  3

0.14.0 新版功能.

示例

>>> from scipy.signal import savgol_filter
>>> np.set_printoptions(precision=2)  # For compact display.
>>> x = np.array([2, 2, 5, 2, 1, 0, 1, 4, 9])

过滤,窗长为5,2次多项式。对所有其他参数使用默认值。

>>> savgol_filter(x, 5, 2)
array([1.66, 3.17, 3.54, 2.86, 0.66, 0.17, 1.  , 4.  , 9.  ])

请注意,x中的最后五个值是抛物线的样本,因此当mode=‘interp’(默认值)与Polyorder=2一起使用时,最后三个值保持不变。比较一下,例如, mode='nearest'

>>> savgol_filter(x, 5, 2, mode='nearest')
array([1.74, 3.03, 3.54, 2.86, 0.66, 0.17, 1.  , 4.6 , 7.97])