scipy.signal.

decimate#

scipy.signal.decimate(x, q, n=None, ftype='iir', ось=-1, zero_phase=True)[источник]#

Понизить частоту дискретизации сигнала после применения антиалиасингового фильтра.

По умолчанию используется фильтр Чебышева типа I 8-го порядка. 30-точечный FIR-фильтр с окном Хэмминга используется, если ftype это 'fir'.

Параметры:
xarray_like

Входной сигнал, состоящий из равноотстоящих выборок. Если x является многомерным массивом, параметр ось указывает ось времени.

qint

Коэффициент понижающей дискретизации, который является положительным целым числом. При использовании IIR понижающей дискретизации рекомендуется вызывать decimate несколько раз для коэффициентов понижающей дискретизации выше 13.

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

Порядок фильтра (на 1 меньше длины для 'fir'). По умолчанию 8 для 'iir' и 20 раз коэффициент прореживания для 'fir'.

ftypestr {'iir', 'fir'} или dlti instance, optional

Если 'iir' или 'fir', задает тип низкочастотного фильтра. Если экземпляр dlti объект, использует этот объект для фильтрации перед понижением частоты дискретизации.

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

Ось, вдоль которой производится децимация.

zero_phasebool, необязательно

Предотвратить фазовый сдвиг путём фильтрации с filtfilt вместо lfilter при использовании БИХ-фильтра и сдвига выходов обратно на групповую задержку фильтра при использовании КИХ-фильтра. Значение по умолчанию для True рекомендуется, поскольку сдвиг фазы обычно нежелателен.

Добавлено в версии 0.18.0.

Возвращает:
yndarray

Прореженный сигнал.

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

resample

Передискретизация вверх или вниз с использованием метода БПФ.

resample_poly

Передискретизация с использованием полифазной фильтрации и КИХ-фильтра.

Примечания

Для нецелых коэффициентов прореживания, resample . Обратитесь к scipy.interpolate модуль для методов передискретизации сигналов с непостоянными интервалами дискретизации.

The zero_phase ключевое слово было добавлено в версии 0.18.0. Возможность использования экземпляров dlti как ftype был добавлен в версии 0.18.0.

Примеры

>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt

Определите параметры волны.

>>> wave_duration = 3
>>> sample_rate = 100
>>> freq = 2
>>> q = 5

Вычислить количество выборок.

>>> samples = wave_duration*sample_rate
>>> samples_decimated = int(samples/q)

Создать косинусоидальную волну.

>>> x = np.linspace(0, wave_duration, samples, endpoint=False)
>>> y = np.cos(x*np.pi*freq*2)

Децимация косинусоидальной волны.

>>> ydem = signal.decimate(y, q)
>>> xnew = np.linspace(0, wave_duration, samples_decimated, endpoint=False)

Построить исходные и прореженные волны.

>>> plt.plot(x, y, '.-', xnew, ydem, 'o-')
>>> plt.xlabel('Time, Seconds')
>>> plt.legend(['data', 'decimated'], loc='best')
>>> plt.show()
../../_images/scipy-signal-decimate-1.png