アルゴリズム (Hilbert)

ヒルベルト変換が次式で定義されることを思い出して下さい。

g(y)=H(f(x))=\frac 1\pi \int_{-\infty }^\infty \frac{f(x)dx}{x-y}\,\!

数式の形を下記のように変更することができます。

g(y)=\frac 1\pi \int _{-\infty }^\infty \frac{f(x-y)dx}x\,\!

これはHilbert変換がコンボリューションとして表示できることを示しています。

g(y)=\frac 1{\pi x}*f(x) \,\!

そのため、ヒルベルト変換を計算するためにコンボリューションの理論に基づく高速アルゴリズムを使用することができます。アルゴリスムは次のように表すことができます。

g(y)=ifft[fft(\frac 1{\pi x})\cdot fft(f(x))] \,\!

ここで fft() は、高速フーリエ変換の演算子で、ifft() は、逆高速フーリエ変換の演算子を表します。

次のことが分かっています。

fft(\frac 1{\pi x})=-jsgn(freq) \,\!

ここで freq は周波数、 sgn() はsin関数です。そのため、積 fft(\frac 1{\pi x})\cdot fft(f(x)) \,\!は、入力信号のフーリエ変換の特殊フィルタリングとして計算できます。フィルタリングにより、正の周波数で位相のずれ90度、負の周波数で位相のずれ90度が起こることにで周波数成分が変わります。振幅は不変のままです。積の逆フーリエ変換を適用することで、入力データのヒルベルト変換を得ることができます。

Hilbert変換を計算した後、分析信号はその定義式から派生することができます。