首页 > 解决方案 > 如何计算 num_fft 值?

问题描述

你们能帮我看看这段代码吗?

fs = 1000

num_fft = 1024;


t = np.arange(0, 1, 1/fs)

f0 = 100
f1 = 200
x = np.cos(2*np.pi*f0*t) + 3*np.cos(2*np.pi*f1*t) + np.random.randn(t.size)


Y = fft(x, num_fft)
Y = np.abs(Y)


ps = Y**2 / num_fft

...

我在互联网上找到了这段代码,我不明白该代码中“num_fft”的目的是什么?以及如何获得价值?在上面的代码中,这里值 1024。

希望您能帮助我,并感谢您的所有帮助。

标签: pythonsignal-processingfftfrequency-domain

解决方案


如果您在 numpy ( numpy.fft.fft) 中使用 FFT 实现,那么 的意义在于num_fft输出的转换轴的长度。在 FFT 的上下文中,这是频率空间中的样本数。

由于您的t(以及因此x)包含 1000 个样本(如此处所规定的fs),因此该num_fft值最终会用零填充您的输入,使其长度为 1024 个样本。如果您的x数组大于 1024 个样本,它会将频率空间输出截断为等于 1024 个样本。

根据用于计算 FFT 的库,当您的样本数量不是 2 的幂时,这可能会对性能产生影响。现在大多数库都及时使用混合基数抽取,所以这不是一个大问题,尝试对性能进行基准测试,然后您看看会不会影响到你。

这是文档


推荐阅读