傅里叶变换与Numpy FFT
这可能是个很简单的问题,但我还是想问。
我想计算一个函数 f(x) 的傅里叶变换。所以我定义了一个 numpy 数组 X,并通过向量化的函数 f 进行处理。现在如果我计算这个数组 f(X) 的快速傅里叶变换(FFT),结果并不是 f(x) 的傅里叶变换,就像我在纸上计算的那样。例如,如果我计算高斯函数的 FFT,我应该得到一个高斯函数,或者一个实部非常接近高斯的数组。
这是我的代码。请告诉我我需要做什么才能得到通常的傅里叶变换。
import matplotlib.pyplot as plt
import numpy as np
N = 128
x = np.linspace(-5, 5, N)
y = np.exp(-x**2)
y_fft = np.fft.fftshift(np.fft.fft(y).real)
plt.plot(x, y_fft)
plt.show()
让我再强调一下。我想计算任何函数(例如高斯函数)的傅里叶变换。FFT 是计算一组数字的傅里叶变换的方法,但这并不等同于简单地将连续傅里叶变换公式离散化。
2 个回答
4
我觉得我在这里回答了你的问题。
(在我自己在上面的链接中提问和回答之前,没有看到你的问题)
7
不,快速傅里叶变换(FFT)并不是用来计算一个函数的傅里叶变换(FT)的方法。FFT是一种快速算法,用来计算离散傅里叶变换(DFT),也就是对一组样本数据进行处理。这组样本可以理解为在均匀间隔的点上对一个函数进行取样。
DFT和FT是两种不同的东西,你不能用DFT来计算FT。想了解它们之间的区别,可以查看这个链接。
如果你的函数是周期性的,那么它的频谱只在特定的点上有定义。你可以在均匀间隔的样本上使用DFT来推测FT,但前提是你要非常仔细地选择你的范围和取样频率,并且这个范围要是你函数所有谐波周期的整数倍。