Excel의 매크로 기능을 사용하면 개별 데이터의 Fast Fourier Transform (FFT)과 Discrete Forier Transform(DFT) 처리를 자동으로 변환할 수 있지만, 대부분 Excel은 데이터량이 많아 사용이 어려운 경우가 많습니다.

그래서 오늘은 C#으로 Fourier transform부분을 라이브러리(*.dll)로 하고 이 라이브러리를 사용한 프로그램을 작성하는 것을 알아 보겠습니다.

2020-01-26_22h18_33

실행 프로그램은 오른쪽 링크를 클릭하셔서 다운로드 가능하며,  FourierTransform.zip <- 클릭
모든 소스코드는 아래의 GitHub에서 공개합니다.
https://github.com/ImagingSolution/FourierCSharp

그럼 지금부터 실행법을 알아보도록 하겠습니다.

프로그램 실행

위에서 링크한 zip파일을 압축 해제하면,

  • FourierTransform.exe
  • FourierCSharp.dll
  • sampledata

3개의 파일이 있으며, 이 중 “FourierTransform.exe”를 더블 클릭하여 실행합니다.

 

Fourier Transform가능한 데이터 포맷

데이터는 1행마다 1개의 데이터로 CSV파일 입니다.

Sample 01)

1
1.30939551
1.59096344
1.820538079
1.980767038
2.06331351
2.069803727
2.01139008
1.906994542
1.780482109
1.65716389
1.560123288
1.506883103
1.506883103
1.560123288

입력 데이터에 실수와 허수가 포함된 경우에는 1행 마다 실수 부분, 허수 부분 이 됩니다.

Sample 02)

50, 0
0, -25
0, 0
0, -12.5
0, 0
0, 0

샘플 데이터는 ZIP 파일 내의 sampledata 폴더 내부에 저장된 CSV파일을 참조해 주세요.

 

데이터 취득

메뉴에서 File → LoadData 를 클릭하고 CSV파일을 지정하면 데이터가 취득 되며 Fourier Transform 결과 (Fourier Transform 후의 각 주파수의 크기)가 표시됩니다.
Fourier Transform 은 데이터의 숫자가 2의 n승의 경우→ FFT,  그 외의 경우→ DFT를 실행합니다.

 

DFT, IDFT의 변환

메뉴에서 Fourier direction → Forward 또는 Backward 를 클릭하여 DFT, IDFT의 변환이 가능합니다.

DFT와 IDF는 각각 아래의 공식으로 계산할 수 있습니다.

DFT 계산공식

IDFT 계산 공식

 

창함수 

메뉴에서 Window→ Hamming, Hanning, Blackman 중에 하나를 클릭하여 각각의 창함수를 적용하게 됩니다.
다만, 창함수를 적용하면 원래 데이터로 돌릴 수 없으니 기존 데이터가 필요한 경우에는 다시 한번 데이터를 불러와 주세요.

(Left) 창함수 적용 전

(Right) 창함수 적용 후

 

 

 

 

 

 

 

 

[주의사항]

본 블로그에서 공개된 모든 프로그램은 자유롭게 사용이 가능하지만, 버그 등으로 인한 문제점에 대해서는 책임 지지 않으니 사용 시 주의 바랍니다.