2차원 푸리에 변환
fft2
함수는 2차원 데이터를 주파수 영역으로 변환합니다. 예를 들어, 2차원 광학 마스크를 변환하여 회절 패턴을 나타낼 수 있습니다.
2차원 푸리에 변환
다음 식은 m×n 행렬 X의 이산 푸리에 변환 Y를 정의합니다.
ωm과 ω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
fft2
를 사용하여 마스크의 2차원 푸리에 변환을 계산하고 fftshift
함수를 사용하여 영주파수 성분이 가운데에 오도록 출력을 재배열합니다. 결과로 나타나는 회절 패턴 주파수를 플로팅합니다. 파란색은 작은 진폭을 나타내고 노란색은 큰 진폭을 나타냅니다.
DP = fftshift(fft2(M));
imagesc(abs(DP))
axis image
진폭이 작은 영역의 세부 사항을 개선하려면 회절 패턴의 2차원 로그를 플로팅하십시오. 매우 작은 진폭은 수치적 반올림의 영향을 받으며 사각 그리드는 방사형 비대칭을 일으킵니다.
imagesc(abs(log2(DP)))
axis image
참고 문헌
[1] Fowles, G. R. Introduction to Modern Optics. New York: Dover, 1989.
참고 항목
fft2
| fftshift
| fftn
| ifft2
| fft