Python离散傅立叶变换

时间:2020-07-16 17:16:33

标签: python fft

我用NumPy编写了自己的2d DFT版本,但是它非常慢,并且给出的结果与np.fft.fft2不同。 np fft.fft2是否基于快速傅立叶变换?我的代码有什么问题吗?

def gray_DFT(spatial_img, centerlize = False):
    M,N = spatial_img.shape
    frequency_img = np.zeros(spatial_img.shape)
    for u in range(0,M):
        for v in range(0,N):
            print(u,v)
            mesh_x, mesh_y = np.meshgrid(np.arange(M),np.arange(N), indexing = 'ij')
            matrix = u * mesh_x / M + v * mesh_y / N
            complex_matrix = -2j*np.pi*matrix
            exp_matrix = np.exp(complex_matrix)
            if centerlize:
                transform_matrix = np.power((-np.ones((M,N))), mesh_x + mesh_y)
                frequency_img[u,v] = np.sum(spatial_img*transform_matrix*exp_matrix)
            else:    
                frequency_img[u,v] = np.sum(spatial_img*exp_matrix)
    return frequency_img

0 个答案:

没有答案