이 글에서 설명하는 이산 푸리에 변환은 무한 시간영역이 아닌 유한 시간영역에 대한 변환이다. 무한 시간영역의 신호는 실제 우리가 다루는 신호에서는 존재하지 않으며, 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

Z transform

Posted 2016. 1. 20. 20:09

 

Z transform은 수열에 대해서 개발된 형태이다. Discrete signal에 사용한다.

Continuous system에서 라플라스 변환이 있다면, 이와 비슷한 역할을 해주는 것이 바로 Z transform이다.

라플라스 변환과 같이, 미분방정식을 풀때 유용하게 쓸수가 있다.

 

One-Sided Z-Transform

One side , 즉 +영역만을 사용하는 변환이다.

공식을 보면 0부터 무한대까지의 영역만을 더해주는 것을 볼 수 있다.

Two-Sided Z-Transform

말 그대로 두 영역, +와 - 영역을 모두 변환하는 것이다.

디지털 신호처리에서는 주로 One side 가 아닌 Two side 트랜스폼을 사용하므로 Two side에 대해서 중점적으로 다루도록 하겠다.

z 변환에서 z의 물리적 의미는  푸리에 변환의 의미로 해석해봤을때와 같은 의미라고 볼 수 있다. 오메가(w)는 2*pi*f 이므로 즉 2파이 간격으로 값을 갖게되는 변환이다. 하지만 여기서 z를  로 그냥  대체해서 쓸수는 없다. z 트랜스폼은 푸리에 변환과는 다른 변환이다. 오히려 z 트랜스폼이 더 넓은 의미의 변환이고, z 트랜스폼을 통해 푸리에 변환을 구할 수는 있지만 푸리에 변환으로 z 트랜스폼을 알 수는 없다고 한다. ( 이것에 대한 자세한 내용은 더 공부해봐야 알 것 같다.) 

 

ROC (Region Of Convergence)

ROC는 X(z)가 어느 범위에서 정의되는지 알 수 있게 해준다. 말 그대로 수렴 영역으로서, z 변환값을 수렴하게 하는 z의 범위를 말한다.

앞서서 말했듯 z 변환은 수열의 계산이 발전된 것이라고 보면 되는데,

z 변환의 식은 -무한대부터 +무한대까지의 수열을 더한 값이며, 고등학교때 배운 등비수열의 합(무한급수) 공식으로 정리 할 수있다.

위의 식에서 n의 범위에 따라서 z트랜스폼은 하나는 공비가 z/b 이고 다른하나는 공비가 a/z 인 수열들의 합으로 정리된다. 그리고 무한급수가 수렴하기위한 조건은,   공비 <1   , 이므로 z 변환의 수렴조건은 다음과 같고, 이것을 ROC (Region Of Convergence) 라고 한다.

z 변환에서 roc는 아주 중요하다. z 변환식이 같다고 하더라도 roc 가 다르면 실제 그 식들은 서로 다른 것이다. 따라서 roc가 없다면 X(z) 식을 역변환을 할 수가 없다.

Stability

어떤 선형 시스템의 임펄스 응답 h(n)의 z변환을  Transfer function(전달함수)이라고 한다. 전달함수는 어떤 입력을 넣었을때 어떤 출력이 나오게 하는지를 알려주는 입출력 관계식이고, (입력과 시스템을 z 영역에서 곱해주면 출력이 나온다.) 이때 이 전달함수를 B(z)/A(z) 꼴로 표현할 수 있는데 이 전달함수의 pole 에 따라서 시스템의 stability 가 결정된다.

pole이란 B(z)/A(z) 꼴의 전달함수를 무한대로 가도록 하는 z 값이며 극이라고도 한다. 전달함수를 무한대로 가도록 하는 값이므로 분모 A(z)를 0이 되게 하는 값이 pole이 된다.

여기서 전달함수의 pole 이 단위원(unit circle) 안에 존재하여야  Stable 한 시스템이 된다. 단위원은 반지름이 1인 원을 의미 하므로, 쉽게말해 pole이 1보다 작아야 stable 하다는 뜻이다.

조심해야 할 점은 위에서 본 ROC와 구분해야 한다는 점이다.  Stability란 말 그대로 시스템이 시간이 무한대로 흘렀을 때 발산하는지 수렴하는지 여부이다. 위에서 말한 ROC는 H(z)가 존재하는지, 즉,  수렴하는지 여부를 알게 하는 범위인 것이지만, h(n)이 수렴할지는 모르는 것이다. 즉,  H(z)가 수렴한다해도 꼭 Stable 한 시스템인 것은 아니다. 

 

위의 식을 보면 H(z)는 공비가 pk/z 인 급수들의 합으로 표현될 수 있다. 여기서 z가 pk가 될 경우 H(z)는 무한대가 되므로 이 시스템의 pole은 pk 이다. (K개의 폴이 존재하는 것이다.) 

아까 ROC를 설명하며 보았듯이 공비인 pk/z가 1보다 작다면 , H(z)는 수렴하게 된다. 즉, H(z)가 수렴하기 위한 범위는 이다.

하지만, H(z)를 역변환 한 h(n)을 보자, H(z)를 역변환한 h(n)은 다음과 같다.

H(z)가 수렴하더라도 (pk/z가 1보다 작더라도) 만약, pole인 pk 가 1보다 크다면, h(n)은 n이 무한대로 갈수록 발산하게 된다(공비가 1보다 크므로). 즉 Stable 하지 않은 시스템인 것이다.

따라서 어떤 시스템이 Stable 하기위해서는 전달함수의 모든 pole이 unit circle 안에 존재해야 한다는 조건을 만족하여야 한다.

 

 

 

 

 

 

 

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

DFT(Discrete Fourier Transform), zero padding  (0) 2016.02.03

1차원 파동방정식.

1차원, 즉 , 기하학적으로 1차원만 고려하는 것, x방향에 대해서만 고려하는 파동 방정식이다.

그림과 같은 원통형 내부에서 작용하는 파동을 생각해보자.

 

 

왼쪽의 스피커에서 파동을 발생시킨다면, 위치에 따른 압력이 달라질 것이고 이 압력의 변화가 어떤 모습을 나타내는지 알아내야 한다. 이 파동방정식을 세우기 위해서 몇가지 변수들의 관계식들을 정리하여야 한다.

Euler's equation

 x 에서의 압력을 p(x) 라 하고, 입자속도를 v(x)라고 하면 , 뉴턴의 제 2 운동법칙에 의해 위치 x 에서는 다음과 같은 식이 성립한다.

x와 (x+dx) 사이의 압력차이와 단면적 A의 곱은 곧 그 면적에 작용하는 힘을 나타내고, 우변의 A와 dx의 곱은 부피, 그리고 는 밀도이므로  곱은 질량이다. ( 질량 = 부피x밀도 ) 그리고 속도v를 미분한 것은 가속도이므로 , 위 식은 곧 뉴턴의 제2 운동법칙 F=ma 를 의미한다. (는 total밀도이고 정밀도 (소리가 없을때 밀도)와 변하는 밀도 의 합이다. 즉, 쉽게말해, 는 밀도의 DC성분이고, 는 밀도의 AC성분이라고 보면 된다.)

양변을 dx로 나눠주면 좌변은 p의 x에대한 편미분이 되고, 정리해주면 위와 같은 식이 나온다.  우변은 v에 대한 전미분을 한 것이다. 입자속도 v를 t에 대해 미분해주고, 위치 x에 대해서도 변화량이 미미하지만 존재한다 생각하고 x에 대한 변화량까지 포함해준 것이다. 이것이 Euler's equation이다. ( 수식쓰기가 귀찮아서 중간중간에 손으로 쓴것들이 좀있음...;;)

   여기서 밀도 로 근사화하고( 성분은 아주 작게 변화하는 값이므로), v의 x에 대한 편미분 항을 무시한 것(거리x에 의한 입자속도 변화량은 시간 t에의한 변화량에 비하면 아주 미미한 정도이므로 )linear Euler's equation 이라고 한다.

 

연속의 정리

연속의 정리란 들어온 질량만큼 밀도가 증가한다는 것이다.

들어온 질량 = 밀도의 변화   라고 생각하여 아래와 같은 식이 성립된다.

좌변의 밀도 x 속도 x A 는 곧 A를 통해서 순간 들어오는 질량, 즉 질량의 변화를 의미한다. ( 질량 = 밀도 x 부피 = 밀도 x  (dx)  x  A 이고, dx의 변화가 곧 입자속도 v 가 되므로 밀도x v x A는 곧 들어온 질량을 의미)  우변의 dxA는 부피가 되고, 밀도의 변화량과 곱하였으므로 이것 또한 결국에는 질량이 얼마나 증가하였는가를 의미한다.

이 또한 양변을 dx로 나누어 주면   의 x에 대한 편미분이 되고, 편미분을 한 뒤 양변의 A를 정리해주면 위와 같은 식이 되고, 이를 equation of continuity 라 한다.

 

압력과 밀도의 관계

압력과 밀도의 관계는 adiabatic exponent, 단열지수에 의해 결정되는데, 이 단열지수는 이전부터 물리학자들이 밝혀낸 값들이 있으니 이것을 이용하여 관계식을 구성할 수 있다.( 솔직히 어떻게 이렇게 관계식이 나오는지는 잘 모르겠다...)

단열지수는 단원자분자, 이원자분자 등등 여러 조건에 따라 달라지는데, 공기는 이원자 분자이고 이때 단열지수 는 1.402이다.

밀도와 압력의 그래프에서 기울기는 곧 그 매질에서의 파동의 속도 c의 제곱이된다.

여기서 기울를 구하기 위해 압력 를 테일러 전개를 하면

위와 같은 꼴로 나타낼 수 있고, 선형 음향학에서는 한 점에서 가 미세하게 변화하는 꼴이므로 이를 선형 꼴로 근사화 하여 2번째 항 이외를 무시한다면,

위와 같이 변형된다. 그렇게 되면 그래프의 기울기는 위의 두번째 항의 계수가 되며, 다음과 같이 파동의 속도와의 식을 세울 수 있다.

 

 

앞의 연속의 정리로 다시 돌아가서

                    형 음향학에서 위의 로 근사화 하고(보다 훨씬 크므로 를 그냥 로 근사화함) , 두번째 항인 밀도를 x로 편미분 한 항을 제거하여 근사화 할 수 있다. (앞에서 연속의정리를 유도하는 과정을 보면, 밀도x속도 를 dx로 나누게 되어 좌변과 같은 꼴이나오게 되는데, 밀도는 정밀도 를 중심으로 미세하게 변화하므로 두번째 항을 제거한 것이 아닐까 생각한다.)

그리고 압력과 밀도그래프의 기울기는 파동의 속도 c의 제곱이므로

밀도에 관한 식을 압력에 관한 식으로 바꿀 수 있고, linear continuity equation 을 얻게 된다.

 

 

1차원 파동 방정식

이제 앞서 구한 linear euler's equation과 linear continuity equation을 이용하여 1차원 파동방정식을 구할 수 있다.

linear euler's equation 의 양변을 x에 대하여 편미분하여 우변을 linear continuity eq 로 정리하면

1차원 파동 방정식을 구하게 된다.

 

 

 

아직 공부중이라 부족한 점이 많을 수도 있지만 공부한만큼 최대한 정리한 것입니다. 설명이 도중에 난해한 부분이 있더라도 이해바랍니다.