[英]I want to use MATLAB fft2 function for electromagnetic wave propagation
我想通過以下方式進行 EM(電磁)波傳播
A = fft2(F(x,y,d))
中找到場傅里葉變換kz = k^2 -(kx^2+ky^2)
其中kx = 2*pi*1/dx,ky = 2*pi*1/dy
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.