如果使用矩阵属性理解2D DFT计算,那将是一个很好的帮助。因此,我尝试使用python实现它。该守则如下所示。
from PIL import Image
import numpy as np
def compute_dft_1(img):
img_array = np.array(img, dtype=float)
global M, N
(M, N) = img_array.shape
m = np.arange(M)
n = np.arange(N)
k, l = np.meshgrid(m, n)
e1 = np.exp(-2j * np.pi * ((m * k / M) + (n * l / N)))
sum_terms = np.dot(e1, data_array)
return sum_terms
img_a = Image.open("image.png")
compute_dft_1(img_a)
然而,计算结果与真实结果完全不同(我用numpy.fft.fft2检查了它)。我已经努力检查代码的哪一部分是错的,但我找不到它。你能帮我找出问题吗?