pythonnumpyscipyfftdft

DFT matrix in python


What's the easiest way to get the DFT matrix for 2-d DFT in python? I could not find such function in numpy.fft. Thanks!


Solution

  • I don't think this is built in. However, direct calculation is straightforward:

    import numpy as np
    def DFT_matrix(N):
        i, j = np.meshgrid(np.arange(N), np.arange(N))
        omega = np.exp( - 2 * pi * 1J / N )
        W = np.power( omega, i * j ) / sqrt(N)
        return W
    

    EDIT For a 2D FFT matrix, you can use the following:

    x = np.zeros(N, N) # x is any input data with those dimensions
    W = DFT_matrix(N)
    dft_of_x = W.dot(x).dot(W)