더북(TheBook)

10.1.2 1차원 데이터에 대한 이산 푸리에 변환의 구현

이산 푸리에 변환을 구현하기 위하여 ImageTool 프로젝트에 새로운 파일들을 추가하도록 하자. 새로 추가할 파일의 이름은 IppFourier.h와 IppFourier.cpp이다. Visual Studio에서 [프로젝트] > [새 항목 추가...] 메뉴를 선택하여 IppFourier.h 파일과 IppFourier.cpp 파일을 각각 추가하자.

1차원 데이터에 대한 이산 푸리에 변환 구현 함수의 이름은 DFT1d를 사용하기로 하자. 그리고 소스 10-1과 같이 IppFourier.h 파일에 DFT1d 함수 선언을 추가하자.

소스 10-1 1차원 데이터에 대한 DFT 함수 선언(IppFourier.h)
#pragma once

void DFT1d(double* re, double* im, int N, int dir);

DFT1d 함수는 이 책에서 소개하고 있는 IppImage 클래스를 사용하지 않는 함수이다. 그러므로 함수 이름을 Ipp로 시작하지 않았다. 이 함수는 입력 데이터의 값을 실수부와 허수부로 나누어 각각 reim으로 입력 받아서 이산 푸리에 변환 또는 이산 푸리에 역변환을 수행한다. 입력 데이터의 값은 double형의 배열로 받으며, 데이터의 개수는 세 번째 인자인 N으로 전달된다. DFT1d 함수의 마지막 함수 인자 dir은 푸리에 변환의 방향을 결정하게 되는데, dir 값이 1이면 이산 푸리에 변환(DFT)을 수행하고, -1이면 이산 푸리에 역변환(IDFT)을 수행한다. 푸리에 변환된 결괏값의 실수부와 허수부는 다시 배열 reim에 각각 저장된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.