Main Content

二维傅里叶变换

fft2 函数将二维数据变换为频率空间。例如,您可以变换二维光学掩膜以揭示其衍射模式。

二维傅里叶变换

以下公式定义 m×n 矩阵 X 的离散傅里叶变换 Y。

Yp+1,q+1=j=0m1k=0n1ωmjpωnkqXj+1,k+1

ωm 和 ωn 是以下方程所定义的复单位根。

ωm=e2πi/mωn=e2πi/n

i 是虚数单位,p 和 j 是值范围从 0 到 m–1 的索引,q 和 k 是值范围从 0 到 n–1 的索引。在此公式中,X 和 Y 的索引平移 1 位,以反映 MATLAB® 中的矩阵索引。

计算 X 的二维傅里叶变换等同于首先计算 X 每列的一维变换,然后获取每行结果的一维变换。换言之,命令 fft2(X) 等同于 Y = fft(fft(X).').'

二维衍射模式

在光学领域,傅里叶变换可用于描述平面波入射到带有小孔的光学掩膜上所产生的衍射模式 [1]。本示例对光学掩膜使用 fft2 函数来计算其衍射模式。

创建用于定义带有小圆孔的光学掩膜的逻辑数组。

n = 2^10;                 % size of mask
M = zeros(n);
I = 1:n; 
x = I-n/2;                % mask x-coordinates 
y = n/2-I;                % mask y-coordinates
[X,Y] = meshgrid(x,y);    % create 2-D mask grid
R = 10;                   % aperture radius
A = (X.^2 + Y.^2 <= R^2); % circular aperture of radius R
M(A) = 1;                 % set mask elements inside aperture to 1
imagesc(M)                % plot mask
axis image

Figure contains an axes object. The axes object contains an object of type image.

使用 fft2 计算掩膜的二维傅里叶变换,并使用 fftshift 函数重新排列输出,从而使零频率分量位于中央。绘制生成的衍射模式频率。蓝色指示较小的振幅,黄色指示较大的振幅。

DP = fftshift(fft2(M));
imagesc(abs(DP))
axis image

Figure contains an axes object. The axes object contains an object of type image.

为增强小振幅区域的细节,需绘制衍射模式的二维对数。极小的振幅会受数值舍入误差影响,而矩形网格则会导致径向非对称性。

imagesc(abs(log2(DP)))
axis image

Figure contains an axes object. The axes object contains an object of type image.

参考

[1] Fowles, G. R. Introduction to Modern Optics. New York: Dover, 1989.

另请参阅

| | | |

相关主题