exponenta event banner

Использование FFT2 на графическом процессоре для моделирования дифракционных диаграмм

В этом примере используется Toolbox™ параллельных вычислений для выполнения двухмерного быстрого преобразования Фурье (FFT) на графическом процессоре. Двумерное преобразование Фурье используется в оптике для вычисления дифракционных диаграмм дальнего поля. Эти дифракционные картины наблюдаются, когда монохроматический источник света проходит через небольшое отверстие, как в эксперименте Янга с двойной щелью.

Определение системы координат

Прежде чем моделировать свет, прошедший через апертуру, мы должны определить нашу систему координат. Чтобы получить правильное числовое поведение при вызове fft2, мы должны тщательно организовать x и y чтобы нулевое значение находилось в правильном месте.

N2 равна половине размера в каждом измерении.

N2 = 1024;
[gx, gy] = meshgrid( gpuArray.colon( -1, 1/N2, (N2-1)/N2 ) );

Моделирование дифракционной картины для прямоугольной апертуры

Моделируем эффект прохождения параллельного луча монохроматического света через небольшую прямоугольную апертуру. Двумерное преобразование Фурье описывает световое поле на большом расстоянии от апертуры. Мы начинаем с формирования aperture в качестве логической маски, основанной на системе координат, тогда источник света является просто вариантом апертуры с двойной точностью. Световой сигнал дальнего поля обнаруживается с помощью fft2.

aperture       = ( abs(gx) < 4/N2 ) .* ( abs(gy) < 2/N2 );
lightsource    = double( aperture );
farfieldsignal = fft2( lightsource );

Отображение интенсивности света для прямоугольной апертуры

Мы рассчитываем яркость света в дальнем поле по величине в квадрате светового поля. Наконец, мы используем fftshift чтобы помочь визуализации.

farfieldintensity = real( farfieldsignal .* conj( farfieldsignal ) );

imagesc( fftshift( farfieldintensity ) );
axis( 'equal' ); axis( 'off' );
title( 'Rectangular aperture far-field diffraction pattern' );

Моделирование двухщелевого эксперимента Янга

Одним из наиболее известных экспериментов в оптике является двухщелевой эксперимент Янга, который показывает световые помехи, когда апертура содержит две параллельные щели. Виден ряд ярких точек, где происходит конструктивное пересечение. В этом случае мы формируем отверстие, представляющее две щели. Ограничим апертуру в y направление для обеспечения того, чтобы результирующий массив не был полностью сконцентрирован вдоль горизонтальной оси.

slits          = (abs( gx ) <= 10/N2) .* (abs( gx ) >= 8/N2);
aperture       = slits .* (abs(gy) < 20/N2);
lightsource    = double( aperture );
farfieldsignal = fft2( lightsource );

Отображение интенсивности света для двойной щели Янга

Вычисляем и отображаем интенсивность, как и раньше.

farfieldintensity = real( farfieldsignal .* conj( farfieldsignal ) );
imagesc( fftshift( farfieldintensity ) );
axis( 'equal' ); axis( 'off' );
title( 'Double slit far-field diffraction pattern' );