当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.zoom_fft用法及代码示例


本文简要介绍 python 语言中 scipy.signal.zoom_fft 的用法。

用法:

scipy.signal.zoom_fft(x, fn, m=None, *, fs=2, endpoint=False, axis=-1)#

仅针对 fn 范围内的频率计算 x 的 DFT。

参数

x 数组

要转换的信号。

fn array_like

给出频率范围的长度为 2 的序列 [f1, f2] 或标量,假定范围为 [0, fn]。

m 整数,可选

要评估的点数。默认值为 x 的长度。

fs 浮点数,可选

采样频率。如果fs=10例如,表示 10 kHz,则f1f2也将以 kHz 为单位。默认采样频率为 2,因此f1f2应在 [0, 1] 范围内,以保持变换低于奈奎斯特频率。

endpoint 布尔型,可选

如果为 True,则 f2 是最后一个样本。否则,不包括在内。默认为假。

axis 整数,可选

计算 FFT 的轴。如果未给出,则使用最后一个轴。

返回

out ndarray

转换后的信号。傅里叶变换将在点 f1、f1+df、f1+2df、…、f2 处计算,其中 df=(f2-f1)/m。

注意

选择默认值使得 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()
scipy-signal-zoom_fft-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.zoom_fft。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。