힐버트 변환

 

힐버트 변환이 필요한 이유

힐버트 변환이 필요한 이유에 대해 설명하기 위해서는 힐버트 변환이 하는 역할이 무엇인지, 그리고 그 역할을 수행함으로써 얻을 수 있는 결과는 무엇인지 파악하는 것이 중요한 과정일 것이라는 생각이 든다. 먼저, 힐버트 변환의 역할은 일종의 선형 필터로써 신호의 amplitude는 유지하되, phase만 π2π2만큼 shift 시켜주는 것이다. (음의 주파수의 경우에는 π/2π/2만큼 phase shift 시켜준다.)


그림 1. 힐버트 변환은 원 신호의 amplitude는 유지하고 phase를 -90' shift 시킨다.

힐버트 변환의 특성

힐베르트 변환 필터의 특성은 모든 주파수에서 크기는 변하지 않고(all-pass filter) 위상만 음의 주파수에선 +90도, 양의 주파수에선 -90도로 변화시켜주는 필터이다. 즉 어떤 주파수의 cosωtcosωt 신호가 들어가면 항상 sinωtsinωt 신호가 나오는 것이다.

즉, 힐버트 변환을 정의함으로써 어떠한 실수 신호라도 그 신호를 π2π2 또는 π2π2 phase shift 시켜줄 수 있게 되는데, 그렇게 되면 실수 신호 를 복소수 차원으로 확장시킬 수 있게 되어서 amplitude와 phase의 분석이 쉬워지게 된다.

즉, 어떠한 실수 신호를 x(t)x(t)라 하고, 힐버트 변환 된 신호를 ˆx(t)^x(t)라 했을 때, 복소수 차원으로 확장시켜 생각할 수 있는 신호 xp(t)=x(t)+jˆx(t)xp(t)=x(t)+j^x(t)를 생각할 수 있게 되는 것이다.

가령 이 신호 x(t)x(t)cos(ω0t+θ)cos(ω0t+θ)인 경우에는 xp(t)=cos(ω0t+θ)+jsin(ω0t+θ)xp(t)=cos(ω0t+θ)+jsin(ω0t+θ)라고 생각 할 수 있다. 이미 잘 알다시피 위의 xp(t)xp(t)xp(t)=ej(ω0t+θ)xp(t)=ej(ω0t+θ)로 표현할 수 있으며, 복소평면과 오일러 공식에 의해서 이 신호의 phase는 쉽게 구할 수 있게 된다. 이 처럼 실수차원의 신호를 복소수 차원으로 확장하여 해석하는 방법을 ‘해석적 표현(analytic signal)을 유도 한다’ 고 한다.

x(t)x(t)cos(ω0t+θ)cos(ω0t+θ)인 경우는 특별한 경우에 한하지만, 위와 같은 분석법은 어떠한 실수 신호에서라도 적용 가능하므로, 일반적인 실수 신호를 복소수 차원으로 확장해서 해석적 표현을 유도한다는 것은 매우 의미있는 과정이다.

힐버트 변환의 유도

힐버트 변환은 amplitude는 그대로 두고 phase만 변환시키는 역할을 한다. 따라서, 힐버트 변환은 일종의 all-pass 필터로 생각할 수 있으며, 위의 힐버트 변환의 특성을 만족시키는 transfer function은 다음과 같다.

|H(f)|=1

이고

H(f)={π/2,for f<0π/2,for f>0

그러므로 H(f)=j×sgn(f)라고 일반화 시킬 수 있다1. 그러므로 변환 kernel인 impulse function h(t)H(f)=j×sgn(f)를 inverse Fourier Transform을 취함으로써 얻을 수 있다.


PROOF 힐버트 변환 kernel의 유도

h(t)=H(f)ej2πftdf=j×sgn(f)ej2πftdf

이 때, sgn(f)를 다음과 같이 근사시켜 생각할 수 있다.

sgn(f)G(f;α)={eαf,for f>0eαf,for f<0

이 때, G(f;α)α0로 근접할 때 sgn(f)와 매우 근사해진다는 것을 알 수 있다.

그러므로, 유도 과정에서는 G(f;α)의 inverse Fourier transform을 생각하고, 이후 α0로 근접할 때의 g(t)의 모양을 생각하도록 하자.

그러므로,

h(t)=jlimα0g(t;α)

라고 할 수 있으며, g(t;α)는 다음과 같이 유도할 수 있다.

g(t;α)=G(f;α)ej2πftdf =0eαfej2πftdf+0eαfej2πftdf =0eαf+j2πftdf+0eαf+j2πftdf =1(α+j2πt)|e(α+j2πt)f|0+1(α+j2πt)|e(α+j2πt)f|0 =1(α+j2πt)(10)+1(α+j2πt)(01) =1(α+j2πt)1(α+j2πt) =1(αj2πt)1(α+j2πt)=j4πtα2+(2πt)2

따라서,

h(t)=jlimα0g(t;α)=jlimα0j4πtα2+(2πt)2 =jj4πt4π2t2=jjπt=1πt

일반적으로, 입력함수 x(t)에 대한 출력함수 y(t)는 시스템의 impulse response h(t)에 대해서

y(t)=x(t)h(t)=x(t)h(tτ)dτ

로 표현할 수 있으며, 힐버트 변환의 출력을 y(t) 대신에 ˆx(t)라고 할 때, 다음이 성립한다.

ˆx(t)=x(t)1π(tτ)dτ =1πx(t)1tτdτ

힐버트 변환의 성질

신호 x(t)에 대한 힐버트 변환 결과를 ˆx(t)라고 할 때, 힐버트 변환은 다음과 같은 성질을 가진다.

힐버트 변환의 중복 적용

힐버트 변환을 두 번 취해주게 되면 원래 신호의 부호가 반전되는 결과를 가져온다. 이것은 phase shift를 π 또는 π만큼 시켜주기 때문. 이것을 수식을 이용해 표현하자면

(H(f))2={j×j=1,for f<0(j)×(j)=1,for f>0

이다.

즉,

ˆˆx(t)=x(t)

삼각함수의 힐버트 변환

  • x(t)=cos(2πf0t)ˆx(t)=sin(2πf0t)

  • x(t)=sin(2πf0t)ˆx(t)=cos(2πf0t)

  • x(t)=exp(j2πf0t)

ˆx(t)={jexp(j2πf0t),for f0>0+jexp(j2πf0t),for f0<0=j×sgn(2πf0)exp(j2πf0t)

x(t)ˆx(t)는 같은 양의 에너지(또는 파워)를 가진다.

이것은 Parseval’s theorem으로부터 유도할 수 있다. ˆx(t)의 푸리에 변환을 ˆX(f)라고 했을 때, ˆX(f)=j×sgn(f)X(f)이므로,

|ˆX(f)|=|X(f)|

가 성립한다.

그러므로 아래와 같은 Parseval’s theorem에 의해 x(t)ˆx(t)의 에너지 또는 파워는 같은 값을 가진다는 것을 알 수 있다.

x2(t)dt=|X(f)|2df

x(t)ˆx(t)는 직교함수이다.

다른 말로 x(t)ˆx(t)의 내적이 0이다. 즉,

x(t)ˆx(t)dt=0

이다.

이것 또한 Parseval’s theorem으로 증명할 수 있는데, 복소 신호에 대한 일반적인 Parseval’s theorem을 적용하면 위의 내적 값은 다음과 같아진다.

=X(f)ˆX(f)df =X(f) j sign(f)X(f)df =j sgn(f)|X(f)|2df=0

sgn(f)는 0에 대해 symmetric function이기 때문

Bedrosian identity (☆)

주파수 대역(spectra)가 겹치지 않는 두개의 신호 c(t)m(t)를 생각해보자. 이 때, m(t)가 lowpass filter이고 c(t)가 highpass filter라고 할 수 있으며 다음이 성립한다.

즉, f0의 높은 주파수로 신호가 amplitude modulation된다고 했을 때, modulation되는 신호를 m(t)라고 하고 carrier signal을 c(t)라고 하면 다음이 성립한다.


Signal의 Envelope


그림 2. Signal의 envelope이 말하는 것.
(출처 : http://www.expertsmind.com/CMSImages/2091_Detection%20of%20AM%20signals.png)

Bedrosian identity를 통해 amplitude modulation된 신호의 envelope를 구할 때 힐버트 변환을 활용할 수 있다.

즉, lowpass filter m(t)를 높은 주파수 f0로 amplitude modulation 시킬 때, carrier signal을 c(t)=cos(ω0t)라고 하면 AM signal은 x(t)=m(t)c(t)이다.

이 때, x(t)를 힐버트 변환하여 다음의 신호를 생각 할 수 있다.

xp(t)=x(t)+jˆx(t)

where

ˆx(t)=sin(ω0t)

이므로

xp(t)=m(t)cos(ω0t)+jm(t)sin(ω0t) =m(t)exp(jω0t)

이다.

그러므로,

|xp(t)|=|m(t)exp(jω0t)|=|m(t)|

이다. 따라서

|m(t)|

는 AM signal의 envelope이다.

  1. sgn()은 입력이 양수가 들어가면 +1, 음수가 들어가면 -1을 출력하는 함수다. ‘시그넘’이라고 발음함.