我想做电磁(电磁)波的传播
1.求平面z==d,A = fft2(F(x,y,d))
中场的傅里叶变换
1.PS(相移)kz = k^2 -(kx^2+ky^2)
,其中kx = 2*pi*1/dx ,ky = 2*pi*1/dy
1.C = IFFT2(A*EXP(i*PS)
但我没有得到预期的结果,我认为我混淆了FFT输出排列和我定义kx和ky的排列的方式
如有线索,敬请垂询。
流程图如下:1.计算z==d上的字段
2.对z==d=>F(Kx,Ky,d)处的场进行傅立叶2D变换,其中,
kx = 2*pi*fx , fx = 1/dx
ky = 2*pi*fy , fy =1/dy
kz = k^2 – (kx^2+ky^2)
3.对(F(Kx,Ky,d)*exp(i*kz*(Z-d)))
@Z==d1进行逆傅立叶变换,当d1>d时,求出z==d1中的总场。当z=d1,d1,…时发生这种情况..,Dn
然而,我对FFT输出的频率安排感到困惑,我定义空间频率(kx和ky)的方式是一致的。
3条答案
按热度按时间6mzjoqzu1#
看来你是在用夫琅和费近似传播波?虽然我不确定您的输出是什么样子,但FFT经常将所需的信号“分割”,使其一半位于窗口的右侧,另一半位于窗口的左侧。
尝试使用:
请务必阅读MatLab中的
fftshift
帮助条目。如果幅度有问题,请记住正确地对FFT进行归一化(除以最大值框)。
5vf7fwbs2#
您是否检查过以前是否使用了i变量(例如,在for循环中?)有时它会被覆盖...(在使用j或普通SQRT(-1)的情况下)
pdsfdshx3#
请注意,kz=Sqrt(k^2-(kx^2+ky^2)),而不是kz=k^2-(kx^2+ky^2)