2

EM(ELECTROMAGNETIC)波動伝搬を行いたい

  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) における場のフーリエ 2D 変換を行います。ここで、

 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 を正しく正規化することを忘れないでください (最大値のビンで除算します)。

于 2013-04-15T20:12:11.793 に答える
0

以前に i 変数を使用したかどうかを確認しましたか (たとえば for ループで?) 時々上書きされます... (j またはプレーン sqrt(-1) を使用する場合)

于 2013-04-15T19:56:46.447 に答える