Signal Processing Toolbox    
hilbert

Hilbert変換

表示

詳細

x = hilbert(xr) は、実数データ列から、解析信号とも呼ばれる複素螺旋列を出力します。解析信号 x = xr + i*xi は、実数部 xr はオリジナルのデータで、虚数部 xi はHilbert変換から構成されるものです。虚数部は、オリジナルの実数列を90°位相シフトした形です。したがって、正弦値は余弦値に変換され、逆もまた同様です。Hilbert変換された級数は、オリジナルの実数データと同じ振幅と周波数成分をもち、オリジナルデータの位相に応じた位相情報を含みます。

xr が行列の場合、x = hilbert(xr) は、行列の列方向にHilbert変換を行ないます。

x = hilbert(xr,n) は、n 点の FFT を使って、Hilbert 変換を計算してください。入力データ xr は、長さ n になるように、ゼロを加えられるか、切り取られるかします。

Hilbert変換は、振幅や周波数などの時系列の瞬間的な特性を計算するのに役立ちます。瞬間的な振幅は、複素Hilbert変換の振幅であり、瞬間的な周波数は、瞬間的な位相角の時間変化率です。純粋な正弦波の場合、瞬間的な振幅と瞬間的な周波数は一定値です。しかし、瞬間的な位相は、局所的な位相角が単一の周期で線形に変化することを反映して、ノコギリ形となります。混合正弦波の場合、特性は、せいぜい2〜3点の短期すなわち局所的な平均にすぎません。

参考文献[1]には、最小位相復元のKolmogorov法が記述してあります。この方法は、時系列のスペクトル密度の対数を計算したもののHilbert変換を必要とします。ツールボックスの関数 rceps は、この復元を実行します。

離散時間解析信号 x に対して、fft(x) の最後の半分はゼロになり、最初の成分(DC)と中央の要素(Nyquist)は、虚数部をもっていません。

アルゴリズム

データ列xの解析的な信号は、片側フーリエ変換です。すなわち、負の周波数に対するものは0とします。解析的な信号を近似させるため、hilbertは入力列のFFTを計算し、負の周波数に対応するFFT係数をゼロに置き換え、その結果を逆FFT計算を行ないます。

詳細に説明すると、hilbertは、つぎの4ステップのアルゴリズムを使用します。

  1. 入力列のFFTを計算し、その結果をベクトルyに格納します。変換する前に、必要の場合入力列よりも大きくて2のベキ乗になる最小の長さになるようにゼロを付加します。これにより、最も効率のよいFFT計算が保証されます。
  2. 要素h(i)が、つぎの値をもつベクトルhを作成します。
  3. yhの要素単位の積を計算します。
  4. ステップ3で得られたデータ列の逆FFTを計算し、結果から最初n個の要素を出力します。

入力データxが行列の場合、 hilbertは上記の各ステップを行列の処理ができるように拡張して同様の方法で処理します。

参考
fft
1次元高速フーリエ変換
ifft
1次元逆高速フーリエ変換
rceps
実数ケプストラムと最小位相復元

参考文献

[1] Claerbout, J.F., Fundamentals of Geophysical Data Processing, McGraw-Hill, 1976, pp. 59-62.


 hann icceps