簡體   English   中英

我想用 MATLAB fft2 function 進行電磁波傳播

[英]I want to use MATLAB fft2 function for electromagnetic wave propagation

我想通過以下方式進行 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 output 排列以及我定義 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.取(F(Kx,Ky,d)*exp(i*kz*(Zd))) @ Z == d1 的逆傅立葉變換,當 d1 >d 求 z == d1 中的總場z = d1,d1,…..,dn

但是,我對 fft 的 output 的頻率安排以及我定義空間頻率(kx 和 Ky)的方式是一致的感到困惑。

看來您是通過Fraunhofer逼近來傳播波? 雖然我不確定您的輸出是什么樣子,但FFT通常會“拆分”所需的信號,以使其一半在窗口的右側,而另一半在左側。

嘗試使用:

fftshift(fft(yourstuff));

確保閱讀MATLAB中的fftshift幫助條目。

如果幅度有問題,請記住正確地對FFT進行歸一化(除以最大值的bin)。

您是否檢查過是否使用過i變量(例如在for循環中?)有時它會被覆蓋...(在使用j或純sqrt(-1)的情況下)

注意 kz = sqrt( k^2 – (kx^2+ky^2) ) 而不是 kz = k^2 – (kx^2+ky^2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM