이 글에서 설명하는 이산 푸리에 변환은 무한 시간영역이 아닌 유한 시간영역에 대한 변환이다. 무한 시간영역의 신호는 실제 우리가 다루는 신호에서는 존재하지 않으며, matlab을 이용해서 변환하는 푸리에 변환은 유한 신호에 대한 변환이므로, 실제 사용하는 유한 시간신호, 즉, 수치적으로 계산 할 수 있는 푸리에 변환을 중점적으로 공부해야 한다.

( DTFT( 이산 시간 푸리에 변환) 와 DFT(이산 푸리에 변환)은 다른것이며 혼동하지 않아야 한다. DFT에 대해 정확히 이해하는 것이 이후 실제 신호를 가지고 matlab 등의 프로그램에서 처리를 할 때에 도움이 될 것이다.)

 

이산 푸리에 변환(DFT)을 알기 위해서 먼저 이산 푸리에 급수(DFS)이산 시간 푸리에 변환(DTFT)에 대해 알 필요가 있다.

 

DFS(Discrete Fourier Series)

이산 푸리에 급수란 어떤 이산시간 신호를 여러 주파수의 신호들의 합으로 표현한 것이다. 이때 DFS 는 주기신호에 대하여 적용된다는 것에 유의하여야한다. 주기 신호인 경우 한 주기의 신호만 알면 전체를 알 수 있으므로 한 주기의 N개 신호가 반복된다.

주기 신호 x(n)을 푸리에 급수로 표현한 식은 다음과 같다.

위 식에서 N은 신호의 기본주기이고, 잘 보면 연속 신호의 푸리에 급수 식과 크게 다를것이 없다는 것을 알 수 있다. 신호 x(n)을 각각의 주파수 성분들(복소지수함수)과 그 각각의 성분들의 크기 X(m)을 곱해준 것들의 합을 표현한 것이다.

모든 discrete 한 주기신호는 이렇게 이산 푸리에 급수로 표현 될 수 있다.

 

DTFT(Discrete Time Fourier Transform)

이산 시간 푸리에 변환은 무한 신호에 대한 변환이고 식은다음과 같다.

식을 잘 보면, 복소지수함수는 w에 2파이의 정수배(2*pi*n) 마다 반복되는 함수이므로               

  

따라서 2파이를 주기로 반복되는 주기함수이다.

역변환 , inverse DTFT는 다음과 같이 표현된다.

(변환식은 시그마인 반면에 역변환식은 적분이라는 것에 주목하라)

역변환 공식은 orthonomality of complex exponential 성질에 의해 증명 될 수 있다.

여기서 orthonomality of complex exponential 이란,

아래와 같이 한주기로 서로 다른 주파수의 complex exponential 의 곱을 적분하게 되면, m=n 인 경우에만 주기( 2파이)의 값을 갖고 이외에는 0이 된다.

이는 곧 m=n에 위치한 델타함수와 같은 의미이고, 이것을 위의 역변환 증명과정에서 이용하면 역변환 공식이 성립하는 것을 볼 수 있다.

여기서 자세히 보아야 하는 것은 DTFT에서 x(n)은 discrete한 시간 n 에 대한 신호이고, 변환된 는 연속 신호라는 것이다.

DTFT는 불연속 신호 x(n)에 대한 푸리에 변환이므로 스펙트럼을 알 수 있지만 실제 신호, 실제 디지털 시스템에서 사용되는 변환이 아니다.

예시

위의 스펙트럼은 을 DTFT한것이다.

  불연속 신호 x(n)을 DTFT 하면 2파이 주기로 반복되는 연속신호 를 얻게 되는 것을 볼 수 있다.

 

DFT(Discrete Fourier Transform)

위에서 나온 이산 푸리에 급수를 통해 이산 푸리에 변환을 계산하게 된다. 하지만 DFS 는 주기신호에 대한 표현이며 기본주파수에 따라 표현되지만, 실제 우리가 다루는 신호들은 유한하며 비주기적인 신호일 것이다. 

이때, 길이가 N인 어떤 유한한 비주기 신호 x(n) 을  N샘플 주기를 갖는 주기신호 으로 표현하여 변환할 것이다.

  

 실제 컴퓨터에 우리가 1000샘플의 신호를 넣고 matlab과 같은 프로그램에서 처리를 하게 되면  컴퓨터는 1000샘플 주기를 갖고 반복되는 주기신호로 인식을 하여 푸리에 변환을 하게 된다.

이산 푸리에 변환 식은 다음과 같다.

 DTFT 의 식과 비교해보면 변환된 X(m) 또한 discrete 한 신호 것을 볼 수 있고, 한 주기에 대해서만 계산하는 것을 볼 수 있다.  DFT는 위 식처럼 한 주기의 샘플들만을 변환하여주고, x(n)과 같은 길이의 X(m)을 얻게 된다. 여기서 얻은 X(m)은 한주기만 나와있지만 사실 이 신호 또한 N을 주기로 반복되는 신호라고 생각하면 된다.

역변환 식은 다음과 같다.

DTFT에서 한주기인 2파이 로 나누어주듯, DFT도 한주기가 N개 이므로 N으로 나누어준다.

 

예시  

위의 스펙트럼은을 DFT한것이다. x(n)과 같은 길이인 4샘플을 가진 X(m)으로 변환 되는 것을 볼 수 있다. 이 경우는 신호의 길이가 4개밖에 되지 않으므로 DFT 된 신호가 정확히 표현되지 않은 경우이다. 

좀 더 정확한 주파수 영역의 신호를 얻기 위해서는, 위의 예시와 같은 문제점을 해결해야한다. 이 때 사용하는 방법이 바로 zero-padding 이다.

zero padding은 x(n)의 뒤에 0을 여러개 덧붙여서x(n)의 길이를 늘려줌으로써 DFT된 X(m)을 더 촘촘하게 나타내는 방법이다.

위의 예시와 같은 신호의 뒤에 4개의 0을 덧붙여 DFT 를 수행한다면,

샘플 수가 8개로 늘어난 X(m)을 얻을 수 있다. 이러한 방식으로 고밀도의 스펙트럼을 얻을 수 있다.

N = 32 로 zero padding 한 경우의 X(m)

 

N = 128 로 zero padding 한 경우의 X(m)

 

신호의 샘플 수는 늘어나게 되어 X(m)이 더욱 촘촘한 간격의 한주기 신호로 생성되었고,  단순히 0을 덧붙였으므로 신호의 특성이나 분해능에는 영향을 미치지 않는다. 따라서, zero padding은 고밀도의 스펙트럼을 얻게 해주지만 고분해능의 스펙트럼을 얻을 수 있는 것은 아니다.

 

 

뒷부분에 Cyclic convolution과 linear convolution 에 대한 내용을 쓰려 했지만 생각보다 길어져서 다음에 올려야겠다.

 

'Digtal Signal Processing' 카테고리의 다른 글

Z transform  (0) 2016.01.20