본문 바로가기

푸리에 변환, 신호/푸리에 변환의 모든 것

07-3. 엑셀에서 FFT 계산하기 (엑셀 자체 FFT 기능)

반응형

엑셀에는 FFT 계산을 할 수 있는 기능이 있다.

 

디폴트 기능으로 오픈되어 있는 것은 아니고, 사용할 수 있도록 몇 가지 설정을 하면 FFT 계산을 할 수 있다.

 

엑셀에서 FFT 기능 활성화 하기

1. 엑셀 메뉴에서 "파일 - 옵션" 선택하고, "추가 기능"에서 "관리" 부분에서 'Excel 추가 기능'에 대해 "이동" 클릭

 

2. "추가 기능"에서 "분석 도구 - VBA"를 체크하고 "확인" 버튼 누른다.

 

이제 엑셀에서 FFT 함수를 사용할 수 있다.

 

엑셀에서 FFT 기능 사용해서 값 구하기

$y(n)={0,0,0,0,1,1,1,1}$에 대해 FFT를 수행해서 푸리에 변환값 $Y(k)$를 구해보자.

 

1. $y(n)$값을 아래와 같이 엑셀에 입력한다.

2. 엑셀 메뉴에서 "데이터" 선태하고, 우측 상단에 보이는 "데이터 분석" 클릭

 

3. "푸리에 분석"을 선택하고 "확인" 클릭

이제 "입력 범위"와 "출력 범위"를 선택할 것이다. 

 

4. 입력 범위에 A3~A10까지를 선택하고, '출력 옵션'에서 "출력 범위" 선택 후 B3 셀을 선택. 그러고 나서 "확인" 클릭

FFT의 계산 결과를 보면, 사인함수 계산의 오차 등에 의해, 실제는 -1 임에도 불구하고 "-0.99999..."와 같이 계산되어, 보기에 불편하다.

이를 해결하려면 앞 쪽 페이지에 있는 "06-4. 엑셀을 이용한 DFT 계산(1/4)"에서 선보였던 "CTrim"이라는 자체 제작한 함수를 사용하던지 해야한다. 아니면, 아래와 같이 엑셀 자체 함수를 이용해서 보기 편하게 변경할 수도 있다.

 

5. FFT 결과를 가독성 좋은 포맷으로 변환

FFT결과 셀의 옆에, 아래 수식 적용한다.

 

=ROUND(IMREAL(B3),2)&"+"&"("&ROUND(IMAGINARY(B3),2)&")i"

 

 

 

엑셀 FFT의 한계

엑셀 FFT의 경우 다음과 같은 불편한 점이 있다.

 

치명적인 한계

  • 데이터의 개수가 4096개를 초과하면 사용할 수 없다.!!

좀 불편한 점들

  • 데이터의 개수가 2의 지수승이 아니면 계산을 못한다. --> 사용자가 2의 지수승이 되도록 수동으로 0을 채워주면 된다.
  • 소수점 아래 11자리까지 표현하기에, 보기에 불편하다.

 


특히 4096개 이상의 데이터에 대해 FFT 계산이 안 되는 불편함으로 해서, FFT를 직접 구현해봤다.

 

다음 페이지에서는 엑셀 VBA를 이용해서 직접 FFT 프로그래밍하는 것을 설명한다.

 

-끝-

 이전글: 07-2. FFT 예제를 손으로 풀어보며 이해하기
 다음글: 07-4. 엑셀에서 직접 FFT 프로그래밍 작성하기
 다다음글: 07-5. 가장 빠른 Java용 FFT 구현해보기
반응형