[Numpy-discussion] Weird (wrong?) real fft 2d behavior

Andrew Jaffe a.h.jaffe at gmail.com
Wed Jan 25 01:57:09 CST 2006


If I start with what I thought was an appropriate (n, n/2+1) complex 
matrix which should have a real inverse fft, and then take its real fft, 
I don't get back the original matrix.

Note the presence of very small but nonzero reals in the final matrix, 
and the fact that the 2d and 4th rows are duplicates. This seems to be a 
  mistake somewhere.

Or am I just misunderstanding/misremembering something about 2d real ffts?

Andrew


In [41]: dims=(4,4)

In [42]: delta_k = aniso.dft_realizn(dims, P)
          #### this just makes an appropriate matrix

In [43]: delta_k
Out[43]:
array([[-0.    +0.j    ,  0.5904+0.0429j,  0.9063+0.j    ],
        [-0.221 +0.j    ,  0.4169+0.4602j, -0.6909+0.j    ],
        [ 0.9059+0.j    , -0.8037+0.2604j,  1.835 +0.j    ],
        [ 1.7436+0.j    , -0.2382+0.221j , -0.0607+0.j    ]])
        #### 16 real numbers

In [44]: delta_r = N.dft.inverse_real_fft2d(delta_k)

In [45]: delta_r
Out[45]:
array([[ 0.2718, -0.0956,  0.2805,  0.1505],
        [ 0.0297, -0.0533, -0.259 ,  0.0561],
        [ 0.1308, -0.2096,  0.2288, -0.3041],
        [ 0.0895,  0.1105, -0.3188, -0.1076]])

In [46]: delta_kp = N.dft.real_fft2d(delta_r)

In [47]: delta_kp
Out[47]:
array([[ 0.     +0.00e+00j,  0.5904 +4.2938e-02j,  0.9063 +0.0000e+00j],
        [ 0.7613 +5.5511e-17j,0.4169 +4.6020e-01j, -0.3758 +5.5511e-17j],
        [ 0.9059 +0.0000e+00j,-0.8037+2.6038e-01j, 1.835  +0.0000e+00j],
        [ 0.7613 -5.5511e-17j,-0.2382+2.2099e-01j,-0.3758-5.5511e-17j]])

In [48]: N.__version__
Out[48]: '0.9.5.1982'
------------------------





More information about the Numpy-discussion mailing list