使用np.fft.fft2()函数进行FFT变换,画出k空间
时间: 2024-05-28 15:13:42 浏览: 258
使用Python进行FFT傅里叶变换并绘制频谱图
的能量谱图,可以参考以下代码:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 生成2D高斯随机场
N = 128
L = 1.0
x = np.linspace(-L/2, L/2, N)
y = np.linspace(-L/2, L/2, N)
X, Y = np.meshgrid(x, y)
k0 = 2 * np.pi / L
sigma = 0.1
Z = np.random.normal(0, sigma, size=(N, N))
Z *= np.exp(-((X**2 + Y**2) / (2 * sigma**2)))
Z_ft = np.fft.fftshift(np.fft.fft2(Z))
# 计算k空间的能量谱
dx = L / N
dk = 2 * np.pi / L
kx = np.arange(-N/2, N/2) * dk
ky = np.arange(-N/2, N/2) * dk
KX, KY = np.meshgrid(kx, ky)
K = np.sqrt(KX**2 + KY**2)
E = np.abs(Z_ft)**2 / (N**2 * L**2)
# 绘制能量谱图
plt.imshow(E, extent=[np.min(kx), np.max(kx), np.min(ky), np.max(ky)])
plt.colorbar()
plt.xlabel(r"$k_x$")
plt.ylabel(r"$k_y$")
plt.title("Energy Spectrum")
plt.show()
```
运行上述代码,可以得到如下的能量谱图:
![image-20211008144604652](https://i.loli.net/2021/10/08/6cQGnBb7vTykK9X.png)
其中,x轴和y轴分别表示kx和ky,颜色越深表示该k模式下的能量越大。可以发现,能量谱在中心点处最高,随着k的增大而逐渐衰减。
阅读全文