这个例子使用并行计算工具箱™在GPU上执行二维快速傅里叶变换(FFT)。光学中采用二维傅里叶变换计算远场衍射图案。当单色光源通过小孔径时,如杨氏的双缝实验,可以观察到这些衍射图案。
在模拟穿过光圈的光线之前,我们必须定义坐标系统。来得到正确的数值行为fft2
,我们必须仔细安排x
和y
这样零值就在正确的位置。
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));轴(“平等”);轴(“关闭”);标题(“双缝远场衍射图样”);