我希望通过
进行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输出排列和我定义kx和ky排列的方式
任何线索都表示赞赏。
流程图如下: 1.计算z == d
上的字段2.在z == d =====>进行场的傅里叶2D变换。 F(Kx的,肯塔基州,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时,取(F(Kx,Ky,d)*exp(i*kz*(Z-d)))
@ Z == d1的逆傅里叶变换,找到z == d1中的总场
这种情况发生在z = d1,d1,......,dn
然而,我对fft输出的频率安排感到困惑,而我定义空间频率(kx和Ky)的方式是一致的。
答案 0 :(得分:1)
看来你正在通过弗劳恩霍夫逼近传播波吗?虽然我不确定你的输出是什么样的,但FFT通常会“分割”所需的信号,使其中一半位于窗口右侧,一半位于左侧。
尝试使用:
fftshift(fft(yourstuff));
请务必阅读MATLAB中的fftshift
帮助条目。
如果幅度有问题,请记住正确归一化FFT(除以最大值的bin)。
答案 1 :(得分:0)
您是否检查过之前是否使用过i变量(例如在for循环中?)有时会被覆盖...(在使用j或plain sqrt(-1)的情况下)