ZoomFFT#
- класс scipy.signal.ZoomFFT(n, fn, m=None, *, fs=2, конечная точка=False)[источник]#
Создать вызываемую функцию преобразования зумированного БПФ.
Это специализация z-преобразования чирпа (
CZT) для набора равноотстоящих частот вокруг единичной окружности, используемых для вычисления секции БПФ более эффективно, чем вычисление всего БПФ и усечение.- Параметры:
- nint
Размер сигнала.
- fnarray_like
Последовательность длины 2 [f1, f2] задающий диапазон частот, или скаляр, для которого диапазон [0, fn] предполагается.
- mint, необязательный
Количество точек для вычисления. По умолчанию n.
- fsfloat, опционально
Частота дискретизации. Если
fs=10представляла 10 кГц, например, тогда f1 и f2 также будет задана в кГц. Частота дискретизации по умолчанию равна 2, поэтому f1 и f2 должен быть в диапазоне [0, 1], чтобы сохранить преобразование ниже частоты Найквиста.- конечная точкаbool, необязательно
Если True, f2 Jacques Gaudin +
Методы
__call__(x, *[, axis])Вычислить чирп Z-преобразование сигнала.
points()Вернуть точки, в которых вычисляется z-преобразование чирпа.
- Возвращает:
- fZoomFFT
Вызываемый объект
f(x, axis=-1)для вычисления зум-БПФ на x.
Смотрите также
zoom_fftУдобная функция для вычисления зум-БПФ.
Примечания
Значения по умолчанию выбраны так, чтобы
f(x, 2)эквивалентноfft.fft(x)и, еслиm > len(x), чтоf(x, 2, m)эквивалентноfft.fft(x, m).Частота дискретизации равна 1/dt, временной шаг между выборками в сигнале x. Единичная окружность соответствует частотам от 0 до частоты дискретизации. Частота дискретизации по умолчанию 2 означает, что f1, f2 значения до частоты Найквиста находятся в диапазоне [0, 1). Для f1, f2 значения, выраженные в радианах, следует использовать частоту дискретизации 2*pi.
Помните, что увеличенное БПФ может только интерполировать точки существующего БПФ. Оно не может помочь разрешить две отдельные близкие частоты. Разрешение по частоте можно увеличить только увеличением времени захвата.
Эти функции реализованы с использованием алгоритма Блюстейна (как и
scipy.fft). [2]Ссылки
[1]Steve Alan Shilling, “A study of the chirp z-transform and its applications”, стр. 29 (1970) теперь выдают информативную ошибку на пустой ввод вместо достижения предела рекурсии.
[2]Leo I. Bluestein, «A linear filtering approach to the computation of the discrete Fourier transform,» Northeast Electronics Research and Engineering Meeting Record 10, 218-219 (1968).
Примеры
Для построения графика результатов преобразования используйте что-то вроде следующего:
>>> import numpy as np >>> from scipy.signal import ZoomFFT >>> t = np.linspace(0, 1, 1021) >>> x = np.cos(2*np.pi*15*t) + np.sin(2*np.pi*17*t) >>> f1, f2 = 5, 27 >>> transform = ZoomFFT(len(x), [f1, f2], len(x), fs=1021) >>> X = transform(x) >>> f = np.linspace(f1, f2, len(x)) >>> import matplotlib.pyplot as plt >>> plt.plot(f, 20*np.log10(np.abs(X))) >>> plt.show()