Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

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

06-3. DFT의 수식 이해

반응형

 

앞 페이지까지 DFT의 수식이 어떻게 유도되는지 알아봤고, 그 수식은 다음과 같다.

 

DFT:Y(k)=N1n=0y(n)ei2πNkn,0k<N

IDFT:y(n)=1NN1k=0Y(k)ei2πNkn,0n<N

 

식 (1)은 시간에 대한 신호값 y(n)이 있을 때, 이를 주파수에 대한 수식으로 바꿔주는 것이고, 식 (2)는 반대로 주파수에 대한 신호값 Y(k)에 대해 시간에 대한 수식으로 바꿔주는 것이다. 

 

예를 들어, 주기 N=4이고 y[n]=1,3,1,2 일 때, 식(1)을 이용하여 각각의 주파수에 대한 값을 구해보자.

 

예제에 대한 풀이에 앞서, 풀이 과정에서 빈번하게 사용될 복소지수함수의 값에 대해 잠깐 알아보자.

 


특별한 위치에서의 복소지수함수의 값

DFT 수식에서 ei2πNkn이 계산되어야 하기에, 이 값의 특징을 알아보고자 한다.

ei2πNkn에서, N=4이고, kn가 정수이기에 새로운 변수인 정수 p=kn을 사용하면,

 

ei2πNkn=ei2π4p=eip2π  

p=0:ei02π=e0=1
p=1:ei12π=cos(12π)sin(12π)=i
p=2:ei22π=cosπsinπ=1
p=3:ei32π=cos(32π)sin(32π)=i
p=4:ei42π=cos2πsin2π=1
p=5:ei52π=cos(52π)sin(52π)=i
p=6:ei62π=cos3πsin3π=1
...

p에 따라서 값이 규칙적으로 변함을 알 수 있다. 

 

그림으로 보면 규칙성이 확실하게 보인다. 반지름이 1인 복소 좌표계에서의 원에서, 시계방향으로 회전하면서 각 축과 만나는 값이 eip2π 값이다.

 

문제 풀이 

주기 N=4이고 y[n]={1,3,1,2} 일 때, DFT 식을 이용하여 Y(k)값을 구하시오.

식 (1)을 이용해서 기계적으로 풀어보자. (손으로 직접 풀어보기 바람)

 

Y(0)=3n=0y(n)ei2π04n=y[0]+y[1]+u[2]+y[3]=1+312=1Y(1)=3n=0y(n)ei2π14n=y[0]eiπ20+y[1]eiπ21+y[2]eiπ22+y[3]eiπ23=(1)(1)+(3)(i)+(1)(1)+(2)(i)=25iY(2)=3n=0y[n]ei2π24n=y[0]eiπ0+y[1]eiπ1+y[2]eiπ2+y[3]eiπ3=(1)(1)+(3)(1)+(1)(1)+(2)(1)=131+2=1Y(3)=3n=0y[n]ei2π34n=y[0]ei3π20+y[1]ei3π21+y[2]ei3π22+y[3]ei3π23=(1)(1)+(3)(i)+(1)(1)+(2)(i)=2+5i

 

따라서, Y[k]={1,25i,1,2+5i}

 

똑같은 방법으로 다음 문제도 풀어보자

주기 N=4이고 h[n]={1,2,0,1} 일 때, DFT 식을 이용하여 Y(k)값을 구하시오.

y[n]이 아니고 h[n]이라고해서 달라질 건 없다. 

 

Y(0)=3n=0y(n)ei2π04n=h[0]+h[1]+h[2]+h[3]=1+2+01=2Y(1)=3n=0y(n)ei2π14n=h[0]eiπ20+h[1]eiπ21+h[2]eiπ22+h[3]eiπ23=(1)(1)+(2)(i)+(0)(1)+(1)(i)=13iY(2)=3n=0h[n]ei2π24n=h[0]eiπ0+h[1]eiπ1+h[2]eiπ2+h[3]eiπ3=(1)(1)+(2)(1)+(0)(1)+(1)(1)=12+0+1=0Y(3)=3n=0h[n]ei2π34n=h[0]ei3π20+h[1]ei3π21+h[2]ei3π22+h[3]ei3π23=(1)(1)+(2)(i)+(0)(1)+(1)(i)=1+3i

 

결과는, Y[k]={2,13i,0,1+3i}

 

DFT 수식으로 풀 때의 규칙성

위에서 문제 2개를 손으로 직접 풀었다면, DFT 수식에 대한 규칙성 및 이해도가 높아졌을 것이고, 다음과 같은 규칙을 느꼈을 것이다.

위 그림에서 "③y값과 정현파들과의 내적"이란 부분을 좀 더 설명해보겠다.

 

복소지수로 표현된 부분을 좀 더 간단하게 표시하기 위해서 ϕ라는 함수로 대체해보자. 

 

ϕ(k,n)=ei2πNkn

 

ϕ함수를 사용해서 DFT를 표현하면 다음과 같이 된다.

 

Y(k)=N1n=0y(n)ϕ(k,n)

 

G에 대해 하나씩 값을 구해보자.

 

Y(0)=N1n=0y(n)ϕ(0,n)=y(0)ϕ(0,0)+y(1)ϕ(0,1)+y(2)ϕ(0,2)+y(3)ϕ(0,3)Y(1)=N1n=0y(n)ϕ(1,n)=y(0)ϕ(1,0)+y(1)ϕ(1,1)+y(2)ϕ(1,2)+y(3)ϕ(1,3)Y(2)=N1n=0y(n)ϕ(2,n)=y(0)ϕ(2,0)+y(1)ϕ(2,1)+y(2)ϕ(2,2)+y(3)ϕ(2,3)Y(3)=N1n=0y(n)ϕ(3,n)=y(0)ϕ(3,0)+y(1)ϕ(3,1)+y(2)ϕ(3,2)+y(3)ϕ(3,3)

 

값을 구하는 것을 쭈욱 적다 보면 규칙성을 느꼈을 것이다. 위 수식에서 k의 위치를 표시해보면 다음과 같다.

Y(k)의 값은, k에 의해서 어느 정도 결정된 정현파 ϕ(k,n)에 대해, 모든 y값을 곱하고(내적하고), 합치는 것이다. 아래 그림을 보면 좀 더 이해가 쉬울 것이다.

 

두 벡터 A와 B의 내적은, A를 B에 사영시켜서 생기는 그림자를 구하는 것이라고도 할 수 있다. 

따라서, 위 수식을 보면 알 수 있듯이, Y(k)의 값은 k일 때의 정현파에다가 y값들의 그림자 성분들을 뽑아내서 합친다고 할 수 있다. 

 

좀 더 세밀하게 보면, Y(0)의 값은, k=0일 때의 정현파 ϕ(0,n)에 대해서, y값들을 정현파의 y성분에 대해 사영하고, 그 값들을 전부 합친 것이다. 

 

비유하자면, 촛불들에 의해 어떤 물체가 비쳐지고 그 그림자들이 벽에 생기는데, 그 그림자들의 값을 전부 합쳐서 어떤 값을 만들어 내는 것이다.   

 


 <이상한 나라의 수학자>에서 북한에서 넘어온 천재 수학자이며 특목고 경비로 일하고 있는 경비원 아저씨(최민식 씨)는, 돈이 없어 사설학원에도 못 다니고 수학 9등급인 수포자이며 자신에게 수학을 가르쳐달라고 조르는 학생에게, 2를 소수점 38자리까지 손으로 푼 복사본을 보여주며 이렇게 얘기합니다. 

그냥 2라고 하면 될 것을 이렇게 변태처럼 수십 페이지에 걸쳐 손으로 푼 이는, 리만가설로 유명한 그 리만이고, 이렇게 손으로 귀찮게 시간을 들여서 계산한 것은  2와 친해지고 싶어서라고, 그래야 2를 이해할 수 있어서였다고. 

 

이 페이지에서는 간단한 예제를 가지고 DFT 수식의 규칙성을 알아봤다.

그런데, 너무 간단한 수 몇 개만을 가지고 계산된 결과인 Y(f)를 가지고는, 이게 어떤 것을 의미하는지, 어떤 도움이 되는지 파악이 안 된다. 실제 신호 데이터와 유사한, 좀 더 많은 양의 데이터를 가지고 계산을 해봐야, DFT가 어떤 의미 있는 결과를 보이는지 알 수 있을 것이다.

 

다음 페이지에서는, 엑셀을 이용해서 실제 신호 파형과 유사한 신호 데이터를 이용하여, DFT를 계산해보고, 그 값이 어떤 의미를 가지는지 확인해볼 것이다.

 

-끝-

 

 

 이전글: 06-2. 이산 푸리에 변환(DFT, Discrete Fourier Transform)
 다음글: 06-4. 엑셀을 이용한 DFT 계산(1/4)
 다음다음글: 06-5. 엑셀을 이용한 DFT 계산(2/4)

 

반응형