2

我想通过以下方式进行 EM(电磁)波传播

  1. 在平面 z==d 中找到场傅里叶变换, A = fft2(F(x,y,d))
  2. PS(相移 kz = k^2 -(kx^2+ky^2)kx = 2*pi*1/dx ,ky = 2*pi*1/dy
  3. C = IFFT2(A*EXP(i*PS)

但我没有得到预期的结果,我认为我混淆了 FFT 输出排列和我定义 kx 和 ky 排列的方式

任何线索表示赞赏。

流程图如下: 1.计算 z==d 上的字段

2.对 z ==d =====> F(Kx,Ky,d) 处的场进行傅里叶二维变换,其中 ,

 kx = 2*pi*fx , fx = 1/dx
 ky = 2*pi*fy , fy =1/dy
 kz = k^2 – (kx^2+ky^2)

3.当 d1 >d 时,对 @ Z == d1 进行逆傅立叶变换,(F(Kx,Ky,d)*exp(i*kz*(Z-d))) 以找到 z == d1 中的总场 这发生在 z = d1,d1,…..,dn

但是,我对 fft 输出的频率安排以及我定义空间频率(kx 和 Ky)的方式感到困惑。

4

2 回答 2

1

看来您正在通过弗劳恩霍夫近似传播波?虽然我不确定您的输出是什么样子,但 FFT 通常会“拆分”所需信号,使其一半在窗口右侧,另一半在左侧。

尝试使用:

fftshift(fft(yourstuff));

请务必阅读fftshiftMATLAB 中的帮助条目。

如果幅度有问题,请记住正确归一化 FFT(除以最大值 bin)。

于 2013-04-15T20:12:11.793 回答
0

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

于 2013-04-15T19:56:46.447 回答