gpt4 book ai didi

python - 对几个特定频率取 fft 和 ifft

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:46 24 4
gpt4 key购买 nike

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

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

fft_output = scipy.fftpack.fft(A)

它给了我与所有频率相关的系数。我只需要三个频率 (0, 1/365, 1/182)。所以我认为 fft_output[0]fft_output[364]fft_output[181] 将是我所需频率的正确选项。

现在我想通过使用这三个频率 365 天来获取 ifft。我不知道如何使用 ifft 函数来做到这一点。

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

提前致谢

最佳答案

我不确定我是否理解正确,但让我试一试:

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

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

因为k的单位是cycles/sample,所以第kbin对应的频率由k*F_s/len(A),其中 F_s 是信号 A 的采样频率(例如 Hz、m^-1 等)。

相应的 IFFT bin 是通过取指数的负数给出的:

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

接下来,假设您已经使用上面的第一个等式计算了三个 bin x0x181x364,如果您想要要仅使用这些值来重建原始信号,您可以这样做:

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))

关于python - 对几个特定频率取 fft 和 ifft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com