パラメータ設定
サンプリング周波数 F_s = 1000 Hz 固定。直接 DFT で O(N²) を計算するため、N を大きくすると数秒かかる場合があります。
元信号と包絡線・瞬時位相・瞬時周波数
上段:元信号 x[n](青)と瞬時振幅 ±A[n](赤、包絡線)/下段:瞬時位相 φ[n](緑、unwrap 後)と瞬時周波数 f_i[n](黄、右軸)
理論・主要公式
ヒルベルト変換は、実信号を解析信号(複素信号)に拡張するための線形変換です。DFT 領域では、正周波数成分を 2 倍にして負周波数成分を 0 にし、逆 DFT で時間領域に戻すことで実装できます。
解析信号 z(t) と、原信号・ヒルベルト変換の関係:
$$z(t) = x(t) + j\,\mathcal{H}[x](t)$$
瞬時振幅 A(t)(包絡線)と瞬時位相 φ(t):
$$A(t) = |z(t)| = \sqrt{x(t)^2 + \mathcal{H}[x](t)^2}, \qquad \phi(t) = \arg z(t)$$
瞬時周波数 f_i(t) は瞬時位相の時間微分:
$$f_i(t) = \frac{1}{2\pi}\frac{d\phi(t)}{dt}$$
AM 信号 x(t) = (1 + m·cos(2π f_m t))·cos(2π f_c t) に適用すると、包絡線 A(t) = 1 + m·cos(2π f_m t) が直接得られ、瞬時周波数はキャリア周波数 f_c に一致します。
ヒルベルト変換シミュレーターとは
🙋
「ヒルベルト変換」って名前は聞いたことあるんですけど、何をしてるんですか?フーリエ変換と何が違うんでしょう?
🎓
ざっくり言うと、ヒルベルト変換は信号の各成分を「位相だけ -90 度ずらす」操作だ。たとえば cos が sin になる、というイメージ。これと元の信号を組み合わせると「解析信号」 z(t) = x(t) + j·H[x](t) という複素信号ができて、これが信号処理の世界をすごく広げてくれる。上のシミュレーターで「変調指数 m」を 0.5 にしてグラフを見ると、青い元信号の上下に赤い包絡線がぴったり張りつくだろう?あの赤い線が |z(t)| なんだ。
🙋
あ、本当だ。元の信号がうにょうにょしてる「外側の形」だけが赤で抜き出されてますね。これって何に使うんですか?
🎓
一番分かりやすいのは AM ラジオの復調だ。AM 信号は「音声波形 × 高周波キャリア」になっていて、欲しいのは音声=包絡線の部分。昔のラジオはダイオードで半波整流してローパスフィルタで角を取ってたけど、ヒルベルト変換を使えば数学的に正確に包絡線を取り出せるんだ。波形の「外形」を測りたいときの万能ツールだと思っていい。
🙋
下のグラフの黄色い線、「瞬時周波数」が 100 Hz 付近で一定になってるのは、キャリア周波数 f_c = 100 Hz だからですか?
🎓
その通り。解析信号の位相 φ(t) を時間で微分すると「いま、この瞬間の周波数」が出る。AM 信号はキャリアそのものは周波数変化しないから、瞬時周波数は f_c に固定されるんだ。試しに「キャリア周波数」スライダーを 200 Hz にしてみて。黄色い線がそのまま 200 Hz 付近にスライドするはずだよ。
🙋
じゃあ FM みたいに周波数が動く信号だと、黄色い線も波打つんですね。
🎓
そう、まさにそれが FM 復調の原理だ。FM は瞬時周波数に音声情報を載せているから、解析信号の φ(t) を微分すれば音声が出てくる。デジタル無線受信機の I/Q 復調回路は、本質的にヒルベルト変換で解析信号を作ってる。実務では機械振動診断にも超重要で、ベアリングの異常衝撃を包絡線として抽出する「エンベロープ解析」が現場の定番手法になっているよ。
よくある質問
A(t) = 1 + m·cos(2π f_m t) の時間平均は 1 ですが、二乗平均(RMS)は √(1 + m²/2) になります。m = 0.5 では √1.125 ≈ 1.061。線形平均と RMS の差は信号のパワーを表す重要な量で、AM 放送の送信機設計では「キャリアパワー」と「平均総合パワー」の区別としてこの計算がそのまま使われます。
DFT 実装は数学的に正確な解析信号を返しますが、端点で不連続が出やすく(Gibbs 現象)、リアルタイム処理には向きません。FIR フィルタ実装は、有限長のヒルベルト変換器(奇数タップ、奇対称係数)で近似する方法で、低レイテンシでストリーミング可能なため DSP やデジタル無線で使われます。本ツールは教育用に DFT 実装を採用し、両端 10% をスタッツから除外して端点アーティファクトを避けています。
atan2 は -π〜π の主値しか返さないため、位相は周期的にジャンプします。瞬時周波数は位相の時間微分なので、ジャンプ点で巨大なスパイクが出てしまいます。unwrap は隣り合うサンプル間の差分が ±π を超えたときに ∓2π を加算して連続化する処理で、これを行ってから差分を取ることで正しい瞬時周波数が得られます。本ツールも下段グラフの位相は unwrap 済みで、緑の線が右肩上がりの直線に近くなります。
F_s = 1000 Hz 固定なので、N = 256 では時間窓が 0.256 秒、N = 1024 では 1.024 秒です。窓が短いと変調周波数 f_m = 10 Hz の周期(0.1 秒)が窓内に 2〜3 周期しか入らず、振幅変調深度の推定精度が下がります。一方で計算は速くなります。直接 DFT は O(N²) なので N = 2048 にすると約 16 倍時間がかかります。実用では FFT を使い O(N log N) で計算するのが標準です。
実世界での応用
AM ラジオと無線通信の復調:ヒルベルト変換による解析信号は、AM 復調・SSB(単側波帯)変調・FM 復調すべての基礎です。特に SSB は片側の周波数成分だけを送るため通信帯域を半分にでき、長距離アマチュア無線で広く使われています。デジタル無線受信機の I/Q 復調は、本質的にヒルベルト変換器を内蔵した複素信号処理です。
機械振動診断(エンベロープ解析):回転機械のベアリング欠陥や歯車噛み合い不良は、高周波の共振帯に低周波の繰り返し衝撃が乗った AM 信号として現れます。バンドパスフィルタで共振帯を取り出し、ヒルベルト変換で包絡線を計算してから FFT すると、欠陥の繰り返し周波数(BPFO, BPFI, BSF など)がピークとして現れます。発電所・製鉄所・新幹線車両など、回転機械を扱うあらゆる現場で標準手法です。
地震波・脳波・心電図の解析:地震波の波群速度解析、脳波の α 波・β 波の瞬時振幅追跡、心電図 QRS 波形の包絡線検出など、非定常生体信号・地球物理信号の解析にも広く使われます。Hilbert-Huang 変換は Empirical Mode Decomposition と組み合わせて、非線形非定常信号を内在モード関数に分解する強力な手法です。
画像処理・光学計測:2 次元拡張のヒルベルト変換(Riesz 変換)は、位相シフト干渉計測・縞解析・モノジェニック信号処理で使われ、1 枚の縞画像から位相分布を抽出できます。半導体検査、精密工学の干渉計測、医療画像の特徴抽出など、応用範囲は広範に渡ります。
よくある誤解と注意点
最も多い誤解は、「ヒルベルト変換は周波数領域で何かを切り取るフィルタ」だと思ってしまうことです。実際には振幅特性は全周波数で 1(オールパス)で、変えるのは位相だけ(-π/2 シフト)です。本ツールの実装でも、正周波数を 2 倍・負周波数を 0 にして逆 DFT するのは「解析信号」を作る操作であり、ヒルベルト変換そのものは正と負の符号を反転する位相シフトに相当します。「信号を加工する」のではなく「信号の隠れた成分(虚部)を計算する」と理解するのが正しい捉え方です。
次に多いのが、瞬時振幅・瞬時位相・瞬時周波数を「常に物理的に意味がある量」だと思い込むことです。これらが意味を持つのは、信号がおよそ単一の狭帯域成分でできているとき(Bedrosian の定理の条件を満たすとき)に限られます。広帯域なノイズや複数キャリアが混ざった信号に直接ヒルベルト変換を掛けても、瞬時周波数は負の値を取ったり激しく振動したりして物理的解釈ができなくなります。実務では事前のバンドパスフィルタや Empirical Mode Decomposition による帯域分離が必須です。
最後に、DFT 実装には端点アーティファクトがある点に注意してください。DFT は信号が周期的に繰り返すと仮定するため、信号の最初と最後がつながらないと、両端で位相が大きくジャンプし、瞬時振幅・瞬時周波数とも数十サンプル分が信頼できなくなります。本ツールも統計値の計算では中央の 80% だけを使い、両端 10% を除外しています。実用では窓関数(Hann 等)を掛けるか、FIR ヒルベルト変換器を使うか、信号両端をテーパー処理するなどの対策が必要です。