我想做电磁波传播
A = fft2(F(x,y,d))中的场傅里叶变换kz = k^2 -(kx^2+ky^2),其中kx = 2*pi*1/dx ,ky = 2*pi*1/dyC = IFFT2(A*EXP(i*PS)但是我没有得到预期的结果,我想我混淆了FFT的输出排列以及我定义kx和ky排列的方式。
任何线索都很感激。
流程图如下:1.在z==d上计算字段
2.取z ==d =====> F(Kx,Ky,d)场的Fourier二维变换,
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)的方式是一致的,我感到困惑。
发布于 2013-04-15 20:12:11
看来你是在用夫琅和费近似传播波?虽然我不确定您的输出是什么样子,FFT通常会“分割”所需的信号,因此一半在窗口的右边,一半在左边。
试着使用:
fftshift(fft(yourstuff));一定要在MATLAB中阅读fftshift帮助条目。
如果振幅是一个问题,请记住正确规范化FFT (除以最大值bin)。
发布于 2013-04-15 19:56:46
检查之前是否使用了i变量(例如,在for循环中)?有时会被改写..。(在使用j或普通sqrt(-1)的情况下)
发布于 2022-09-15 09:36:43
注意,kz = sqrt( k^2 - (kx^2+ky^2) )而不是kz = k^2 - (kx^2+ky^2)
https://stackoverflow.com/questions/15116011
复制相似问题