scipy.signal.

savgol_coeffs#

scipy.signal.savgol_coeffs(window_length, polyorder, deriv=0, delta=1.0, pos=None, использовать='conv')[источник]#

Вычислите коэффициенты для 1-D фильтра Савицкого-Голея.

Параметры:
window_lengthint

Длина окна фильтра (т.е., количество коэффициентов).

polyorderint

Порядок полинома, используемого для аппроксимации выборок. polyorder должно быть меньше window_length.

derivint, необязательный

Порядок производной для вычисления. Это должно быть неотрицательное целое число. По умолчанию 0, что означает фильтрацию данных без дифференцирования.

deltafloat, опционально

Расстояние между выборками, к которым будет применён фильтр. Используется только при deriv > 0.

posint или None, опционально

Если pos не None, он задает позицию оценки внутри окна. По умолчанию - середина окна.

использоватьstr, optional

Либо 'conv', либо 'dot'. Этот аргумент выбирает порядок коэффициентов. По умолчанию 'conv', что означает, что коэффициенты упорядочены для использования в свёртке. При use='dot' порядок обратный, поэтому фильтр применяется путём скалярного произведения коэффициентов с набором данных.

Возвращает:
coeffs1-D ndarray

Коэффициенты фильтра.

Смотрите также

savgol_filter

Примечания

Добавлено в версии 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