예제 3. 주파수 1 kHz 파형에 대한 DFT 계산
예제3에 대한 엑셀 자료는, 엑셀파일 "DFT예제_3.xlsm"의 Sheet "3" 참조.
엑셀파일은 이 페이지 제일 밑에 보면 있음
앞의 예제에서는 코사인 파형 1개 주기에 대한 계산을 위해, 좀 비현실적인 주파수 및 샘플링 주파수를 사용했다. (주파수가 1/64인 파형을 가정했는데, 사람의 목소리가 4kHz 정도되기에, $\frac{1}{64}Hz$는 엄청나게 낮은 주파수이다. )
이번에는 주파수가 1KHz이고, 샘플링을 8KHz로해서 신호를 생성하고, 이 신호에 대해서 주기 N=32 및 64로 변환하면서 DFT를 해보겠다. 이렇게 하면 N 값의 의미를 보다 확실하게 파악할 수 있을것이다. (N의 값을 32라던가 64, 128, 256 처럼 2의 지수승으로 하는 것은, FFT에서 N을 2의 지수승으로 했을 때라야 효과적인 계산이되기에 습관적으로 2의 지수승 값으로 정하는 것이고, DFT의 수식을 이용해서 구할 때는 N의 값을 50, 90, 130 등 어떤 값을 사용해도 무방한다.)
- 코사인 파형값을 만들기 위한 기본 수식: $\cos{(2\pi f t)}$ --> f:주파수, t: 시간
- 주파수(f): 1kHz --> 1초에 1000개 주기의 신호. 즉, 1초에 1000개 주기의 파형
- 시간 샘플링 단위: 8kHz --> 1 kHz 신호이기에 최소 2kHz의 샘플링 주기라야 파형손실없이 샘플링을 할 수 있음(Nyquist 이론). 여기서는 8kHz로 샘플링하는 것이기에, 코사인 신호 1주기에 대해 8군데 샘플링하는 것임
N=64로 해서 y(n), W(n,k), Y(k)값을 구해보자.
엑셀에서의 수식
- y[0] : =ROUND(COS(2*PI()*(1000/8000)*B14),2)
- W[0,0]: =CTrim(IMEXP(COMPLEX(0,-2*PI()*E$13*$B14/$C$11)))
- Y[0]: =CSumProduct($C14:$C45,E14:E45)
- Y[0]_re: =IMREAL(E78)
- Y[0]_im: =IMAGINARY(E78)
- Y[0]_magnitude: =ROUND(SQRT(E79^2+E80^2),2)
Y[0]~G[63]에 대해 크기에 대한 그래프를 보면 Y[8]과 Y[56]에서 가장 큰 값을 가진다.
시간에 대한 이산 샘플링 주파수 $f_s=8kHz$이고, 주파수에 대한 이산 샘플링 주기 $N=64$이기에, k의 간격은 $\frac{1}{64}\cdot 8kHz$이다.
따라서, k=8일 때의 값 Y[8]은 $8\cdot\frac{1}{64}\cdot 8kHz=1kHz$일때의 DFT 값을 의미한다. 즉, 이 파형은 1kHz 주파수를 가지는 파형이라고 해석이되고, 원래의 파형 y(t)가 1kHz의 코사인 곡선이기에, 제대로 계산이 되었다. (t에 대해서 1kHz의 곡선이었고, 이러한 파형에 대해 8kHz로 샘플링했었다.)
위 그래프에서 k=56일 때에도 값이 존재하는 것은, 복소수로 나타내는 파형의 특성에 기인한다.
아래 그림을 보자.
64를 주기로 갖는 원이다. 시계방향으로의 8의 위치는, 반시계방향으로는 56의 값과 같다.
따라서, Y[k]값에서 Y[1~32]의 값은 Y[63~32]의 값과 같다. 해서, 위 [그래프 1]을 k=0~63까지가 아닌 -32~32까지로 나타내기도 한다.
즉, 0을 중심으로해서 오른편으로는 k=32까지의 값을 그대로 표현하고, 왼쪽으로 -1은 원래 k=63의 값을, -2는 k=62의 값으로해서 -32는 원래 k=32의 값을 표현하는 것.
이렇게해서 [그래프 1]을 다시 표현하면 아래와 같이 된다.
N=32로 변경해서 계산
이 예제에서 N=64가 아닌 32로 변경해서 계산하면 어떻게 될까?
N=32이기에 Y(k)를 구할 때 n=0~31까지의 값에 대해서만 합성곱을 해야한다.
계산된 Y(k)의 크기값을 보면,
k=4일때와 k=28일 때 값이 존재한다.
위에서 알아봤듯이, 복소평면에서의 특성으로 인해(시계방향으로의 계산인지, 반시계방향으로의 계산인지에 따라) k=4와 k=28은 같은 값이다. (대칭성)
k=4일때의 원래 파형의 주파수를 계산해보자.
시간에 대한 이산 샘플링 주파수 $f_s=8kHz$이고, 주파수에 대한 이산 샘플링 주기 $N=32$이기에, k의 간격은 $\frac{1}{32}\cdot 8kHz$이다.
따라서, k=4일 때의 값 Y[4]은 $4\cdot\frac{1}{32}\cdot 8kHz=1kHz$일때의 DFT 값을 의미한다. 즉, 이 파형은 1kHz 주파수를 가지는 파형이라고 잘 해석이 되었다.
이처럼 N=32로해서 계산을 해도, 위에서 N=64로 했을 때와 동일한 해석이 된다.
그렇다면 N의 값에 따라 어떤 차이가 있을까?
N을 작게하면 주파수 샘플링에 대한 분해능이 떨어진다.
N=64로 했을 때 k의 간격은 $\frac{8}{64}kHz$이고, N=32로하면 $\frac{8}{32}$이다. 즉, N을 작게할수록 세밀한 주파수 간격으로 값을 구분할 수 없다.
다음 예에서 N이 작을 때 어떤 문제가 발생하는지 좀 더 자세히 알아보자.
이 페이지에서 사용한 엑셀 파일:
페이지가 너무 길어질 듯하여, 다음 페이지에 적겠습니다.
-끝-
이전글: 06-5. 엑셀을 이용한 DFT 계산(2/4) |
다음글: 06-7. 엑셀을 이용한 DFT 계산(4/4) |
다음다음글: 06-8. DFT 수식에 대한 해석 --> 작성중 |
'푸리에 변환, 신호 > 푸리에 변환의 모든 것' 카테고리의 다른 글
07. FFT (Fast Fourier Transform, 고속 푸리에 변환) (0) | 2022.07.24 |
---|---|
06-7. 엑셀을 이용한 DFT 계산(4/4) (0) | 2022.07.24 |
06-5. 엑셀을 이용한 DFT 계산(2/4) (3) | 2022.07.22 |
06-4. 엑셀을 이용한 DFT 계산(1/4) (0) | 2022.07.11 |
06-3. DFT의 수식 이해 (0) | 2022.07.10 |