[Numpy-discussion] Weird (wrong?) real fft 2d behavior
Andrew Jaffe
a.h.jaffe at gmail.com
Wed Jan 25 01:57:09 EST 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