2024-04-24 07:56:18 发布
网友
我有一个关于fft和ifft函数的问题。在
fft
ifft
假设A是一个包含365天数据的数组:
A
fft_output = scipy.fftpack.fft(A)
它给出了所有频率的相关系数。我只需要三个频率。所以我认为fft_output[0]和{},fft_output[181]是我想要的频率的正确选择。在
fft_output[0]
fft_output[181]
现在我想用这三个频率365天。我没有想到如何通过使用ifft函数来实现这一点。在
如果有人能指导我,我将不胜感激。在
提前谢谢你
最后,我使用以下代码计算数据的年度周期。希望它给了我正确的答案。在
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:
k
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等)。在
k*F_s/len(A)
F_s
对应的IFFT bin通过取指数的负值给出:
接下来,假设您已经使用上面的第一个等式来计算三个箱子x0,x181,和{},如果您想重建原始信号,只使用这些值,您可以这样做:
x0
x181
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))
最后,我使用以下代码计算数据的年度周期。希望它给了我正确的答案。在
我不确定我是否正确地理解了这个问题,但让我试一试:
首先,如果你只需要原始信号的几个分量的振幅,你可以单独计算它们。如果
A
是您的数据系列,并且您只想知道第k
个bin,那么可以使用definition of DFT:因为
k
的单位是周期/样本,与第k
第个bin对应的频率由k*F_s/len(A)
给出,其中F_s
是信号A
的采样频率(例如Hz、m^-1等)。在对应的IFFT bin通过取指数的负值给出:
^{pr2}$接下来,假设您已经使用上面的第一个等式来计算三个箱子},如果您想重建原始信号,只使用这些值,您可以这样做:
x0
,x181
,和{相关问题 更多 >
编程相关推荐