FFTN дает неожиданные результаты в NumPy - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь взять преобразование Фурье различных структур решетки, но результаты, которые я получаю в моих первых тестах, не имеют смысла.

В качестве первого примера я хочу взятьпреобразование Фурье формы с треугольной симметрией.

Полученное преобразование Фурье также должно иметь 3-кратную вращательную симметрию, но я вижу что-то с квадратной симметрией, поэтому я знаю, что это неверно.

Любая идея, что яздесь не так? enter image description here

 import numpy as np
 import matplotlib.pyplot as plt

 def PlaneWave(x,y,amp,wavelength,angle):
     """
     plane wave propagating in the x-y plane
     Amplitude = amp
     wavelength = wavelength
     propagation angle (relative to +x) = angle
     on the grid x,y
     """
     return amp*np.exp(1j *2*np.pi/wavelength  * (x *np.cos(angle) + y*np.sin(angle)    ) )


 def TLattice(x,y,amp,wavelength):
     """
     compute the intensity profile of a 3-beam triangular lattice with in-plane polarization

     """
     angle=np.pi/6
     B1 = PlaneWave(x,y,amp,wavelength,angle )
     angle=angle+np.pi*2/3
     B2 = PlaneWave(x,y,amp,wavelength,angle )
     angle=angle+np.pi*2/3
     B3 = PlaneWave(x,y,amp,wavelength,angle )
     return np.abs(B1+B2+B3)**2


 size=5
 dx=0.05
 [xx,yy] = np.meshgrid(np.arange(-size,size,dx),np.arange(-size,size,dx))
 pot = TLattice(xx,yy,4,1)
 pot_fft =np.fft.fftshift(np.fft.fft2(pot))
 f, (ax1,ax2) =plt.subplots(2)
 f.suptitle('Comparing a triangular lattice and its FFT')

 ax1.imshow(np.abs(pot))
 ax1.set_title('triangular lattice')

 ax2.imshow(np.log(np.abs(pot_fft)**2))
 ax2.set_title('FFT should also show 3-fold rotational symmetry')
 f.show()
...