Main Content

2차원 푸리에 변환

fft2 함수는 2차원 데이터를 주파수 영역으로 변환합니다. 예를 들어, 2차원 광학 마스크를 변환하여 회절 패턴을 나타낼 수 있습니다.

2차원 푸리에 변환

다음 식은 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에 대한 인덱스는 MATLAB®의 행렬 인덱스를 반영하도록 1만큼 이동되었습니다.

X의 2차원 푸리에 변환을 계산하는 것은 먼저 X의 각 열에 대한 1차원 변환을 계산한 다음 그 결과로 얻은 각 행에 대한 1차원 변환을 구하는 것과 동일합니다. 즉, 명령 fft2(X)Y = fft(fft(X).').'와 동일합니다.

2차원 회절 패턴(Diffraction Pattern)

광학에서 푸리에 변환은 작은 조리개가 장착된 광학 마스크의 평면파 입사에서 생성되는 회절 패턴을 설명하는 데 사용될 수 있습니다 [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를 사용하여 마스크의 2차원 푸리에 변환을 계산하고 fftshift 함수를 사용하여 영주파수 성분이 가운데에 오도록 출력을 재배열합니다. 결과로 나타나는 회절 패턴 주파수를 플로팅합니다. 파란색은 작은 진폭을 나타내고 노란색은 큰 진폭을 나타냅니다.

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

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

진폭이 작은 영역의 세부 사항을 개선하려면 회절 패턴의 2차원 로그를 플로팅하십시오. 매우 작은 진폭은 수치적 반올림의 영향을 받으며 사각 그리드는 방사형 비대칭을 일으킵니다.

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.

참고 항목

| | | |

관련 항목