计算少数特定频率的fft和ifft

2024-04-24 07:56:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于fftifft函数的问题。在

假设A是一个包含365天数据的数组:

fft_output = scipy.fftpack.fft(A)

它给出了所有频率的相关系数。我只需要三个频率。所以我认为fft_output[0]和{},fft_output[181]是我想要的频率的正确选择。在

现在我想用这三个频率365天。我没有想到如何通过使用ifft函数来实现这一点。在

如果有人能指导我,我将不胜感激。在

提前谢谢你


Tags: 数据函数fftoutputscipy数组频率指导
2条回答

最后,我使用以下代码计算数据的年度周期。希望它给了我正确的答案。在

Amp = scipy.fftpack.fft(A)

F = np.zeros(365)

F = F.tolist()

F[0] = Amp[0]

F[1] = Amp[1]

F[364] = Amp[364]

ann_cycle = np.abs(np.fft.ifft(F))

我不确定我是否正确地理解了这个问题,但让我试一试:

首先,如果你只需要原始信号的几个分量的振幅,你可以单独计算它们。如果A是您的数据系列,并且您只想知道第k个bin,那么可以使用definition of DFT

x = np.sum(A*np.exp(-1j*2*np.pi*k*np.arange(len(A))/len(A)))

因为k的单位是周期/样本,与第k第个bin对应的频率由k*F_s/len(A)给出,其中F_s是信号A的采样频率(例如Hz、m^-1等)。在

对应的IFFT bin通过取指数的负值给出:

^{pr2}$

接下来,假设您已经使用上面的第一个等式来计算三个箱子x0x181,和{},如果您想重建原始信号,只使用这些值,您可以这样做:

F = np.zeros((365))
F[0] = x0
F[181] = x181
F[364] = x364
A2 = np.fft.ifft(F) # complex you may wish to use np.abs(np.fft.ifft(F))

相关问题 更多 >