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'} или
dltiinstance, 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()