먼저 이 값을 DFT 수식을 이용해서 엑셀에서 구해보면 다음과 같다.

FFT를 이용해서 구해보자. FFT의 수식은,
8개 포인트 데이터에 대해서 구할 때, FFT에서는 아래 이미지와 같은 순서로 구해진다.
- P와 Q에 의해서 --> Y가 구해지고,
- U, V, R, S에 의해서 -> P, Q가 구해지고,
- y(n)에 의해서 --> U, V, R, S가 구해진다.
여기서 P, Q, U, .. 등은 임의로 붙인 기호이고, 기호 이름 자체에 큰 의미는 없다. 주어진 y(n) 데이터에 의해 2 포인트 DFT값이 구해지고, 2포인트 DFT 값에 의해서 4 포인트의 DFT가 구해지는 관계만 이해하면 된다.

(그림 2)에서 y(n)의 번호가 0~7까지 순서대로 되어 있지 않음에 유의한다.
왜 이렇게 되었을까?
최종 결괏값 Y(k)의 관점에서 생각해보자.
Y(k)의 경우는 0~7까지 차례대로 되어 있다.
그렇다면, y(n)에서 직접 Y(k)를 계산한다면(DFT를 이용해서), y(n)도 0~7까지 차례대로인 상태일 것이다.
그런데, FFT에서는 짝수항인 {y(0), y(2), y(4), y(6)}을 P로 놨고, 홀수항 {y(1), y(3), y(5), y(7)}을 Q로 놓고서 계산한다.
따라서,
개념도에 표시해보면 아래와 같이 될 것이다.

이제 P와 Q를 구하는 것에 대해 생각해보자.
먼저 P에 대해서는, 짝수항에 의한 FFT값인 U와, 홀수항에 의한 FFT값인 V에 의해서 구해진다. 여기서 짝수항은 (그림 3)에서 노란색을 칠한 값들이다. 따라서, U값을 구할 때 사용된 y(n)값은 {y(0), y(4)}가 되고, V값을 구하는데 사용되는 y(n)값은 {y(2), y(6)}이 된다. 마찬가지 원리로 R과 S를 구할 때 사용되는 y(n)값을 구할 수 있고, 이를 개념도에 표시해보면 아래와 같다.

(그림 4)를 보면, 처음 1단계 계산을 할 때 어떤 y(n) 값을 사용해야 할지를 알 수 있고, 이것이 (그림 2)에서 y(n)의 순서를 이러한 순서로 놓은 이유이다.
포인트가 8개일 때야 단계가 3단계밖에 안되기에 손으로 y(n)의 계산 순서를 정할 수 있지만, y(n)이 수백수천 개의 포인트일 때는 이러한 방법으로 y(n)의 계산 순서를 정할 순 없다.
FFT를 프로그래밍할 때는 이러한 수동 방법을 쓰지 않고, 쉽게 y(n)의 순서를 정하는 알고리즘을 사용한다. 이 알고리즘은 다음 페이지에서 엑셀 VBA를 사용한 FFT 프로그래밍에서 소개할 것이다.
이제 FFT를 어떻게 구해야 할지 스케치는 되었고, 실제 계산을 해보자.
계산 순서는 다음과 같다.
- [1단계] 계산 수행 :
이용A(0)=a(0)+a(1),A(1)=a(0)−a(1) - [2단계] 계산 수행:
을 구하고, N=4일 때의 FFT 수식 이용{W04,W14} - [3단계] 계산 수행:
을 구하고, N=8일때의 FFT 수식 이용{W08,W18,W28,W38}
각 단계별 계산을 하기에 앞서 W를 구하는 방법을 먼저 알아보자.
Wk 의 계산
N=8이라면
계산해보면, (
N=8이기에,

여하튼,
마찬가지로 계산하면

[1단계] 계산
1단계는 y(n)의 2개의 쌍으로부터 직접 값을 구한다.

공식은,
위 공식에 따라 계산을 해보자.

[2단계] 계산
2단계는 1단계의 계산 결과를 가지고, N=4일 때의 계산을 하면 된다.

N=4일 때의 계산 방법은,

위 계산방법에 따라 계산을 하면 아래와 같다.

위 풀이식에서, 아랫부분 4개는, 윗부분 4개와 같은 값에서 유도되는 것이기에, 다시 계산할 필요 없이, 똑같은 결과일 것이기에 다시 계산하지 않은 것이다.
그리고, N=4이기에
[3단계 계산]
3단계 계산은 2단계의 결과를 가지고 계산한다.

이때 계산되는 FFT 수식은 N=8일 때의 수식이다.

계산해보면 아래와 같이 된다.

위 계산에서, Y(1), Y(3), Y(5), Y(7)에 대한 계산은, 식이 복잡하여 따로 계산식을 적는다.
Y(1) 계산은,

Y(3)의 계산은,

Y(5)의 계산은,

Y(7)의 계산은,

이처럼 FFT에 의한 계산 결과를 (그림 1)의 DFT를 이용한 결과와 비교해보면, 일치함을 알 수 있다.
FFT 프로그램에서는 위에서 손으로 구한 방법처럼 계산이 진행되고, 이렇게 하면
다음 페이지부터는, 엑셀 자체 기능으로 있는 FFT함수의 사용 및 직접 FFT를 프로그래밍하는 것을 해볼 것이다.
-끝-
이전글: 07-1. FFT의 유도 |
다음글: 07-3. 엑셀에서 FFT 계산하기 (엑셀 자체 FFT 기능) |
다음다음글: 07-4. 엑셀에서 직접 FFT 프로그래밍 작성하기 |
'푸리에 변환, 신호 > 푸리에 변환의 모든 것' 카테고리의 다른 글
07-4. 엑셀에서 직접 FFT 프로그램 만들기 (7) | 2022.07.28 |
---|---|
07-3. 엑셀에서 FFT 계산하기 (엑셀 자체 FFT 기능) (0) | 2022.07.28 |
07-1. FFT 유도 (9) | 2022.07.25 |
07. FFT (Fast Fourier Transform, 고속 푸리에 변환) (0) | 2022.07.24 |
06-7. 엑셀을 이용한 DFT 계산(4/4) (0) | 2022.07.24 |