主要内容

在GPU上使用FFT2模拟衍射图形

这个例子使用并行计算工具箱™在GPU上执行二维快速傅里叶变换(FFT)。光学中采用二维傅里叶变换计算远场衍射图案。当单色光源通过小孔径时,如杨氏的双缝实验,可以观察到这些衍射图案。

定义坐标系

在模拟穿过光圈的光线之前,我们必须定义坐标系统。来得到正确的数值行为fft2,我们必须仔细安排xy这样零值就在正确的位置。

N2是每个维度大小的一半。

N2 = 1024;[gx, gy] = meshgrid(gpuArray。冒号(-1,1/N2, (n1 -1)/N2);

矩形孔径衍射图样的模拟

我们模拟了一束平行的单色光通过一个小矩形孔的效果。二维傅里叶变换描述了距离光阑较远的光场。我们从形成孔径作为一个基于坐标系的逻辑掩模,那么光源就是孔径的双精度版本。远场光信号被发现使用fft2

孔径= (abs (gx) < 4 / N2)。* (abs (gy) < 2 / N2);光源=双(孔径);Farfieldsignal = fft2(光源);

显示矩形孔径的光强度

我们从光场的大小的平方来计算远场的光强。最后,我们使用fftshift帮助可视化。

Farfieldintensity = real(farfieldsignal .* conj(farfieldsignal));Imagesc (fftshift(farfielintensity));轴(“平等”);轴(“关闭”);标题(“矩形孔径远场衍射图”);

模拟杨氏双缝实验

光学中最著名的实验之一是杨氏双狭缝实验,该实验显示了光阑由两个平行狭缝组成时的光干涉。在相长干涉发生的地方可以看到一系列的亮点。在这种情况下,我们用孔径表示两个狭缝。我们把光圈限制在y方向,以确保生成的图案不完全沿水平轴集中。

缝= (abs (gx) < = 10 / N2)。* (abs (gx) > = 8 / N2);孔径=狭缝。* (abs(gy) < 20/N2);光源=双(孔径);Farfieldsignal = fft2(光源);

杨氏双缝的光强显示

我们像以前一样计算和显示强度。

Farfieldintensity = real(farfieldsignal .* conj(farfieldsignal));Imagesc (fftshift(farfielintensity));轴(“平等”);轴(“关闭”);标题(“双缝远场衍射图样”);