zoom_fft#
- scipy.signal.zoom_fft(x, fn, m=None, *, fs=2, конечная точка=False, ось=-1)[источник]#
Вычислить ДПФ от x только для частот в диапазоне fn.
- Параметры:
- xмассив
Сигнал для преобразования.
- fnarray_like
Последовательность длины 2 [f1, f2] задающий диапазон частот, или скаляр, для которого диапазон [0, fn] предполагается.
- mint, необязательный
Количество точек для вычисления. По умолчанию равно длине x.
- fsfloat, опционально
Частота дискретизации. Если
fs=10представляла 10 кГц, например, тогда f1 и f2 также будет задана в кГц. Частота дискретизации по умолчанию равна 2, поэтому f1 и f2 должен быть в диапазоне [0, 1], чтобы сохранить преобразование ниже частоты Найквиста.- конечная точкаbool, необязательно
Если True, f2 Jacques Gaudin +
- осьint, необязательный
Ось, по которой вычисляется БПФ. Если не задана, используется последняя ось.
- Возвращает:
- выходndarray
Преобразованный сигнал. Преобразование Фурье будет вычислено в точках f1, f1+df, f1+2df, …, f2, где df=(f2-f1)/m.
Смотрите также
ZoomFFTКласс, создающий вызываемую функцию частичного БПФ.
Примечания
Значения по умолчанию выбраны так, чтобы
signal.zoom_fft(x, 2)эквивалентноfft.fft(x)и, еслиm > len(x), чтоsignal.zoom_fft(x, 2, m)эквивалентноfft.fft(x, m).Для построения графика величины результирующего преобразования используйте:
plot(linspace(f1, f2, m, endpoint=False), abs(zoom_fft(x, [f1, f2], m)))
Если преобразование нужно повторить, используйте
ZoomFFTдля построения специализированной функции преобразования, которую можно повторно использовать без перевычисления констант.Примеры
Для построения графика результатов преобразования используйте что-то вроде следующего:
>>> import numpy as np >>> from scipy.signal import zoom_fft >>> 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 >>> X = zoom_fft(x, [f1, f2], len(x), fs=1021) >>> f = np.linspace(f1, f2, len(x)) >>> import matplotlib.pyplot as plt >>> plt.plot(f, 20*np.log10(np.abs(X))) >>> plt.show()