1

在 Matlab/Octave/Scipy 中,在两个平面之间来回执行 2D 傅里叶变换后移动频率分量的正确方法是什么(输出平面是输入平面的远场衍射平面)?

假设我想在这两个平面之间运行迭代傅里叶变换算法,以计算全息图(应用于输入平面的相位延迟模式),以便在输出中获得给定的强度模式飞机。

设输入平面中的场称为 A,输出平面中的场称为 B。

所以 B 是 A 的傅里叶变换,A 是 B 的傅里叶逆变换(这来自 Franhauffer 衍射理论)。

问题是:我应该以什么顺序在连接两个平面的傅里叶变换之间使用命令 fftshift 移动频率分量?

似乎编写以下内容不起作用: B=fftshift(fft2(A)); A2=fftshift(ifft2(B));

这可能是一个常见问题,但我无法在任何地方找到答案..

4

1 回答 1

3

我不确定我是否理解您的用例,但一般目的fftshift是旋转输出,fft以使 DC(零频率)箱居中。所以通常的模式是:

X       = fft2(x);         % DC at X(1,1)
X_shift = fftshift(X);     % DC at X_shift(M/2+1,N/2+1)

% ... processing occurs here (Y_shift = foo(X_shift)) ...

Y       = ifftshift(Y_shift);
y       = ifft2(Y);
于 2012-05-27T11:29:36.710 回答