{{위키데이터 속성 추적}}
'''힐베르트 변환'''(Hilbert變換 (또는 힐버트 변환), {{llang|en|Hilbert transform}})은 수학과 [[신호처리]] 용어로, u(t) 라는 함수를 취하는 선형연산자인데, 이는 같은 domain상에서 H(u)(t) 함수를 만들어 낸다.
힐베르트 변환은 신호 u(t)의 해석적 표현을 유도하기 위해 사용되는 신호처리 영역에서 대단히 중요하다.
이는 [[실수]] 신호u(t)를 [[복소수]] 차원으로 확장한다는 것이다.
예로, 힐베르트 변환은 푸리에 해석에서 주어진 함수의 고조파 쌍([[:en:harmonic conjugate]])으로 만든다.
단일 적분 연산자와 푸리에 곱은 동등하다. (어떤 신호가 전달함수를 통과하면, 단일적분연산자인 [[합성곱]]의 결과와 전달함수의 주파수 함수인 푸리에 함수의 곱과 같다는 의미임)

힐베르트 변환은 원래 [[주기함수]], 즉 원에서 [[힐베르트 핵]]({{llang|en|Hilbert kernel}})과 [[합성곱]]에 의해 주어지는 함수를 위해 정의되었다.
그러나 일반적으로 힐베르트 변환은 실선 '''R'''(위상단의 영역)에 정의되는 함수인 코시 핵({{llang|en|Cauchy kernel}})과 [[합성곱]]을 취한다.
힐베르트 변환은 [[페일리-위너 정리]]({{llang|en|Paley–Wiener theorem}})와 연관되어 있다.

힐베르트 변환은 [[정칙 함수]]에 대해 [[리만-힐베르트 문제]]({{llang|en|Riemann–Hilbert problem}})의 특수한 경우를 풀기 위해 도입한 연산자로 이를 도입한 [[다비트 힐베르트]]에 의해 이름이 붙어졌다.
[[파일:Hilbert transform.svg|섬네일|300px|파란색의 구형파에 대한 힐베르트 변환 (붉은 선)]]

== 개요 ==
''u(t)''의 힐베르트 변환은 함수 ''h''(''t'') = 1/(π''t'') 와 ''u''(''t'')의 [[합성곱]]으로 생각할 수 있다.
''h''(''t'')는 적분이 아니기 때문에, [[합성곱]]을 정의하는 적분은 수렴하지 않는다. 대신, [[코시 주요값]](여기에 p.v.라 표시)을 사용하여 힐베르트 변환을 정의한다. 이 경우 명시적으로, 함수 또는 신호 ''u''(''t'')의 힐베르트 변환은 다음과 같다. :

:<math>H(u)(t) = \text{p.v.} \int_{-\infty}^{\infty}u(\tau) h(t-\tau)\, d\tau = \frac{1}{\pi} \ \text{p.v.} \int_{-\infty}^{\infty} \frac{u(\tau)}{t-\tau}\, d\tau</math>

:<math>H(u)(t) = -\frac{1}{\pi}\lim_{\varepsilon\rightarrow 0}\int_{\varepsilon}^\infty \frac{u(t + \tau) - u(t - \tau)}{\tau}\,d\tau.</math>

힐베르트 변환이 함수 ''u''에 2번 연속 수행되면, 결과는 ''u'' 의 음의 값이 된다 :

:<math>H(H(u))(t) = -u(t)</math>

역변환(inverse transform)은 −''H''이다. ''u''(''t'')의 푸리에 변환에서 힐베르트 변환의 영향을 고려함에 의해 이 효과는 쉽게 볼 수 있다. (참조 아래 푸리에 변환과의 관계).

[[상반평면]](upper half-plane)에서 [[해석함수]]([[:en:analytic function]])에 대해, 힐베르트 변환은 경계값(boundary values)의 실수부와 허수부 사이의 관계를 설명한다.
즉, 만약 ''f''(''z'')이 영역 Im ''z''&nbsp;>&nbsp;0에서 해석적이고 ''u''(''t'') = Re&nbsp;''f''(''t''&nbsp;+&nbsp;0·''i''&nbsp;) 라면, 힐베르트 변환이 존재한다는 조건으로 부가적인 값까지 Im&nbsp;''f''(''t''&nbsp;+&nbsp;0·''i''&nbsp;) = ''H''(''u'')(''t'') 가 된다.

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

=== 표기 ===
[[신호처리]]에서 ''u''(''t'')의 힐베르트 변환은 <math>\widehat u(t)\,</math>로 일반적으로 표기된다 ({{harvnb|Brandwood|2003|loc=pg 87}}).
그러나 수학에선 이 표기를 이미 ''u''(''t'')의 [[푸리에 변환]]으로 광범위하게 사용하고 있다 ({{harvnb|Stein|Weiss|1971}}). 경우에 따라선, 힐베르트 변환은 <math>\tilde{u}(t)</math>라고 쓰기도 한다. 더욱이, 많은 문헌에선 여기에 정의한 것의 음으로 힐베르트 변환을 정의한다 ({{harvnb|Bracewell|2000|loc=pg 359}}).

== 역사 ==
힐베르트 변환은 [[리만-힐베르트 문제]](Riemann–Hilbert problem)이라고 알려진 해석적 함수({{harvtxt|Kress|1989}}; {{harvtxt|Bitsadze|2001}})에 관해 Riemann에 의해 제기된 문제에서 [[다비트 힐베르트]]의 1905년 작업에서 시작되었다. 힐베르트의 작업은 주로 원({{harvnb|Khvedelidze|2001}}; {{harvnb|Hilbert|1953}})에서 정의된 함수에 대한 힐베르트 변환에 관한 것이었다.

== 푸리에 변환과의 관계 ==
힐베르트 변환은 [[곱셈 연산자]]이다.{{harv|Duoandikoetxea|2000|loc=Chapter 3}} ''H''의 표기는 σ<sub>''H''</sub>(ω)&nbsp;=&nbsp;−''i''&nbsp;sgn(ω) 인데 여기서 sgn 은 [[:en:sign function|signum function]] 함수이다. 그러므로

:<math>\mathcal{F}(H(u))(\omega) = (-i\,\operatorname{sgn}(\omega)) \cdot \mathcal{F}(u)(\omega)</math>

여기서 <math>\mathcal{F}</math>는 [[푸리에 변환]]을 의미한다. sgn(''x'') = sgn(2π''x'') 이므로,
[[푸리에 변환]] <math> \mathcal{F}</math>의 세 가지 일반적인 정의에 적용되어 이 결과는 다음과 같다.

[[오일러 공식]]에 의해,
:<math>\sigma_H(\omega) = \begin{cases}
 i = e^{+\frac{i\pi}{2}}, & \mbox{for } \omega < 0\\
 0, & \mbox{for } \omega = 0\\
 -i = e^{-\frac{i\pi}{2}}, & \mbox{for } \omega > 0
\end{cases}</math>

고로 ''H''(''u'')(''t'')은 ''u''(''t'')의 음의 주파수 성분은 +90° (π/2 radians)의 위상이 이동 되고, 양의 주파수 성분은 −90° 의 위상이동 효과를 나타낸다.
그리고 ''i''·''H''(''u'')(''t'') 은 양의 주파수 성분을 되살리고, 음의 주파수 성분은 추가로 +90° 위상이동시켜, 결론적으로 음으로 만든다.

힐베르트 변환을 2번 적용했을시, ''u''(''t'')의 음과 양의 주파수 성분은 각각 +180° 와 −180° 이동한다. 이 신호는 크기는 같고 부호만 반대로 된다. ''H''(''H''(''u''))&nbsp;=&nbsp;−''u'',
그 이유는 다음과 같다.

:<math>\big(\sigma_H(\omega)\big)^2 = e^{\pm i\pi} = -1 \qquad \text{for } \omega \neq 0</math>

== 특정함수의 힐베르트 변환 ==
{| class="wikitable"
|-
! 신호<br> <math>u(t)\,</math> !! 힐베르트 변환<ref group="fn">몇몇 저자들(예를 들어 Brace Well)은 앞의 변환의 정의로 -H를 사용한다. 결과적으로 이 표의 오른쪽 열(column)의 부호가 반대로 된다.
</ref><br> <math>H(u)(t)</math>
|-
| align="center"| <math>\sin(t)</math><ref group="fn" name="ex02">''sin''과 ''cos'' 함수의 힐버트 변환은 그것들을 정의하는 적분이 경우에 따라서 수렴할 수 있는 우려가 있는 경우 분포적 의미로 정의 될 수 있다. 주기적인 설정에선, 이 결과는 아무런 어려움없이 유지된다.</ref> || align="center"| <math>-\cos(t)</math>
|-
| align="center"| <math>\cos(t)</math><ref group="fn" name="ex02"/> || align="center"| <math>\sin(t)\,</math>
|-
| align="center"| <math> \exp \left( i t \right) </math> || align="center"| <math> - i \exp \left( i t \right) </math>
|-
| align="center"| <math> \exp \left( -i t \right) </math> || align="center"| <math> i \exp \left( -i t \right) </math>
|-
| align="center"| <math>1 \over t^2 + 1</math> || align="center"| <math>t \over t^2 + 1</math>
|-
| align="center"| '''[[싱크 함수]]''' <br /> <math>\sin(t) \over t</math>|| align="center"| <math> 1 - \cos(t)\over t</math>
|-
| align="center"| '''[[구형함수|구형 함수]]''' <br /> <math> \sqcap(t)</math>|| align="center"| <math>{1 \over \pi} \log \left | {t + {1 \over 2} \over t - {1 \over 2}} \right |</math>
|-
| align="center"| '''[[디랙 델타 함수]]''' <br /><math>\delta(t) \, </math> || align="center"| <math> {1 \over \pi t}</math>
|-
| align="center"|'''[[지시 함수|특성 함수]]''' <br /> <math>\chi_{[a,b]}(t) \,</math> || align="center"| <math>{ \frac{1}{\pi} \left\vert \frac{t - a}{t - b}\right\vert }</math>
|}

더 많은 함수에 대한 힐베르트 변환도 알 수 있다 ({{harvnb|King|2009}}).
상수에 대한 힐베르트 변환은 0임을 상기하라.

== 정의 차원 ==
:<math>H(u)(t) = -\frac{1}{\pi}\lim_{\epsilon\downarrow 0}\int_\epsilon^\infty \frac{u(t + \tau) - u(t - \tau)}{\tau}\,d\tau</math>

이 수식은 거의 모든 ''t''에 존재한다. 무한접근 함수 또한 ''L''<sup>''p''</sup>('''R''')에 있고, 부적절한 적분의 수단으로 극한을 사용한다는 사실이다. 즉 다음과 같다.

:<math>-\frac{1}{\pi}\int_\epsilon^\infty \frac{u(t + \tau) - u(t - \tau)}{\tau}\,d\tau\to H(u)(t)</math>

<!--
==속성==
==정의 차원의 확장==
==Conjugate functions==
==원에서의 힐베르트 변환==
==신호처리에서의 힐베르트 변환==
===무선통신에서의 SSB(single side band)===
-->

== 이산 힐베르트 변환 ==
[[파일:Bandpass discrete Hilbert transform filter.tif|섬네일|400px|오른쪽|그림 1: 주파수 반응이 Nyquist 주파수의 약 95%로 Band 제한된 필터]]
[[파일:Highpass discrete Hilbert transform filter.tif|섬네일|400px|오른쪽|그림 2: 고역통과 주파수 반응을 가진 힐베르트 변환 필터]]
[[파일:DFT approximation to Hilbert filter.png|섬네일|400px|오른쪽|그림 3: 힐베르트 변환에 근사한 DFT]]
[[파일:Effect of circular convolution on discrete Hilbert transform.png|섬네일|400px|오른쪽|그림 4. cos(wt)의 힐베르트 변환은 sin(wt)이다. 이 그림은 MATLAB 라이브러리 함수, hilbert(·)에 의해 계산된 근사 힐베르트 변환과 sin(wt)의 차이]]
아날로그 신호를 이산 신호로 바꾸면 주파수 축에서 아날로그 스펙트럼이 sampling 주파수마다 반복된다.

[[이산시간 푸리에 변환]](discrete-time Fourier transform, DTFT), U(ω)에 대한 이산함수(discrete function) u[n]에 대해, 힐베르트 변환은 다음과 같다.
:<math>H(u)[n] = \scriptstyle{DTFT}^{-1} \displaystyle \{U(\omega)\cdot \sigma_H(\omega)\}</math>

여기서:

:<math>\sigma_H(\omega)\ \stackrel{\mathrm{def}}{=}\ 
\begin{cases}
 e^{+i\pi/2}, & -\pi < \omega < 0 \\
 e^{-i\pi/2}, & 0 < \omega < \pi\\
 0, & \omega = -\pi, 0, \pi
\end{cases}</math>

그리고 합성곱 정리(convolution theorem)에 의해, 등가 수식은 다음과 같다.
:<math>H(u)[n] = u[n] * h[n]</math>

여기서:

:<math>h[n]\ \stackrel{\mathrm{def}}{=}\ \scriptstyle{DTFT}^{-1} \big \{\displaystyle \sigma_H(\omega)\big \} =
\begin{cases}
 0, & \mbox{for }n\mbox{ even}\\
 \frac2{\pi n} & \mbox{for }n\mbox{ odd}
\end{cases}</math>

합성곱을 수치적으로 계산했을때, [[:en:finite impulse response|FIR]] 근사는 '''그림1'''에 보여주는 것처럼 ''h''[''n'']에 대해 치환된다. (다시말해 들어오는 신호와 그림 1의 첫번째 함수로 [[합성곱]]을 취하면 힐베르트 변환이 된다.) 그리고 밴드패스필터의 결과로 낮은 주파수와 높은 주파수 (0과 [[나이퀴스트 주파수]](Nyquist frequency))에서 통과대역이 0로 떨어지는 것을 볼 수 있다.
'''그림 2'''에서 보여주는 것처럼, 높은 끝 주파수는 부드럽고, 연속시간함수인 ''h''(''t'')에 더욱 근사인 resembles samples의 FIR 에 의해 원위치될 수 있다.
그러나 실제적인 문제에 있어서, 적절히 sampling된 ''u''[''n''] 연속 data는 그 주파수에서 사용가능한 주파수를 가지고 있지 않다.
임펄스 반응을 더욱 길게 얻는다면, 낮은 끝 쪽 주파수 또한 잘 처리할 수 있다.
<ref>힐베르트는 다음 이산 변환을 연구하였다.

: <math>\frac{1}{n} * u[n] = \sum_{m=-\infty}^\infty \frac{u(m)}{n-m}\qquad m \neq n</math>

그리고 L<sup>2</sup>의 ''u''(''n'')에 대하여 순열 ''H''(''u'')[''n'']이 또한 L<sup>2</sup>임을 증명하였다.([[힐베르트의 부등식]] 참조). 이에 대한 기초적인 증명은 {{harv|Grafakos|1994}}에 있다. 이 변환은 E. C. Titchmarsh에 의하여 M. Riesz의 결과를 연속인 경우에 증명하기 위하여 사용되었으나({{harvnb|Titchmarsh|1926}}; {{harvnb|Hardy|Littlewood|Polya|1952|loc=¶314}}), 실용적인 신호처리에서는 사용되지 않는다.</ref>

''h''[''n'']에 근사 FIR 필터로, '''[[:en:Overlap-save method|overlap-save]]'''이라는 방법은 긴 ''u''[''n''] 연속 데이터로 [[합성곱]]을 수행하는게 효과적인 방법이다.
때때로 array FFT{''h''[''n'']}는 σ<sub>''H''</sub>(ω)의 상응 샘플에 대치된다.
그것은 다음의 [[:en:periodic summation]]으로 [[합성곱]]의 효과를 가진다.

:<math>h_N[n]\ \stackrel{\text{def}}{=}\ \sum_{m=-\infty}^{\infty} h[n - mN]</math>

'''그림 3'''은 ''h<sub>N</sub>''[''n'']의 반주기와 ''h''[''n'']의 상응 길이 부분의 비교이다.
그들 사이의 차이와 그들 세그먼트 길이 (''N'')보다 짧지 않다는 사실이 왜곡의 근원인데, 세그먼트 길이와 중첩 파라미터를 증가시킴으로써 왜곡을 관리하여 줄일 수 있다.

대중적인 [[매트랩]](MATLAB) 함수인 '''[http://www.mathworks.com/help/toolbox/signal/ref/hilbert.html;jsessionid=67ed4e69e9729363548abed31054 hilbert(u,N)]'''는 복소 출력 데이터의 허수부분으로 ''u''[''n'']의 근사 이산 힐베르트 변환을 해준다.
실수부분은 원래의 입력 연속 데이터이게되어, 복소출력은 ''u''[''n'']의 [[해석적 표현]](analytic representation)이 된다.
위에서 이야기한 것과 비슷하게, hilbert(u, N)함수는 sgn(ω)분포만을 사용하여 ''h<sub>N</sub>''[''n'']로 [[합성곱]]을 취하게 된다.
출력 데이터의 근사수를 무시하여 실제 ''u''[''n''] 연속 데이터보다 큰 ''N''값을 사용함에 의해 왜곡을 줄일 수 있다.
이 형태의 왜곡의 예는 '''그림 4'''에 있다.
<!--
== 디지털 힐베르트 변환 응용 ==
=== IQ 복조에 의한 디지털 수신기(Digital Receiver) ===
=== 초음파진단기의 CW Doppler 신호 추출 ===
=== 초음파진단기의 PW Doppler 신호 추출 ===
-->

== 같이 보기 ==
* [[리스 변환]]
== 각주 ==
{{각주}}
=== 내용주 ===
<references group="fn" />

{{전거 통제}}

[[분류:신호 처리]]
[[분류:다비트 힐베르트]]
[[분류:적분 변환]]
[[분류:조화 함수]]