我想用matlab fft2函数来研究电磁波的传播,

atmip9wb  于 2022-11-15  发布在  Matlab
关注(0)|答案(3)|浏览(142)

我想做电磁(电磁)波的传播
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)的方式是一致的。

6mzjoqzu

6mzjoqzu1#

看来你是在用夫琅和费近似传播波?虽然我不确定您的输出是什么样子,但FFT经常将所需的信号“分割”,使其一半位于窗口的右侧,另一半位于窗口的左侧。
尝试使用:

fftshift(fft(yourstuff));

请务必阅读MatLab中的fftshift帮助条目。
如果幅度有问题,请记住正确地对FFT进行归一化(除以最大值框)。

5vf7fwbs

5vf7fwbs2#

您是否检查过以前是否使用了i变量(例如,在for循环中?)有时它会被覆盖...(在使用j或普通SQRT(-1)的情况下)

pdsfdshx

pdsfdshx3#

请注意,kz=Sqrt(k^2-(kx^2+ky^2)),而不是kz=k^2-(kx^2+ky^2)

相关问题