関数 > 信号処理 > その他の変換関数 > 例: Hilbert 変換
例: Hilbert 変換
hilbert関数を使用して、解析信号の離散フーリエ変換が負周波数でマグニチュードゼロになるように、実際の信号の Hilbert 変換を作成します。
1. sin関数とcos関数を使用して、入力信号を定義します。rnd関数を使用して、ランダムノイズを付加します。
2. 入力信号をプロットします。
3. hilbert 関数を使用して、入力信号の Hilbert 変換を計算します。
4. Hilbert 変換信号をプロットします。
5. 複素信号を構築してプロットします。
以降の手順では、解析信号のマグニチュードが元の信号の複素エンベロープであることを示します。
6. dft関数を使用して信号 z1 のスペクトルを求めます。
7. スペクトルの絶対値をプロットします。
ベクトルの場合、dft 関数と廃止された CFFT 関数の間のスケール係数は 1/N になります。
8. 同じグラフに 4 つの信号すべてをプロットします。
Hilbert によって作成された新しい信号は、次の方法によって変換領域内で入力信号に関連付けられています。
ここで、H は Hilbert 変換器と呼ばれる、次のような周波数応答を返すフィルタです。
ここで
ここで
H はフィルタ設計の手順と関数を使用して構築できます。
理想 Hilbert 変換器
Rabiner/Gold 共著 (Theory and Application of Digital Signal Processing, Prentice-Hall, Inc.) に、理想 Hilbert 変換器の係数が掲載されています。以下に示す例は、Stearns/David 共著 Signal Processing Algorithms (Prentice-Hall) のセクション 14.4 に掲載されている処理に基づいています。理想フィルタの係数のウィンドウ処理とシフトが行われ、長さが奇数 L の因果性フィルタが求められます。
1. 長さと中心を定義します。
2. ウィンドウ処理されていない係数 h を定義します。
3. hamming関数を使用し、vectorize 演算子を使用して h とウィンドウを要素ごとに掛け合わせて、係数を Hamming ウィンドウ処理します。
4. gain関数を使用して、周波数 f での係数 h のフィルタのゲインを計算します。
5. ゲインと周波数をプロットします。
周波数はサンプリング周波数 = 1 に正規化されています。
6. exp関数とarg関数を使用して、フィルタの位相シフトを計算します。
このフィルタには C の遅延があり、この遅延信号を基準にしてフィルタの位相シフトを計算します。遅延の変換関数は次のとおりです。
ここで
7. 位相シフトを度数の単位でプロットします。
シフトは周波数レンジほぼ全体で -90 度です。
フィルタのテスト
1. 信号のパラメータを定義します。
2. exp 関数を使用して、新しい信号を作成します。rnd 関数は、低周波ノイズを付加します。
rnd にカーソルを置いて F5 キーを押すことで再計算すると、別のランダム信号 T を取得できます。
3. これらの要素の共役を最後の 200 カ所に配置することで、逆変換によって現実的な結果が得られるようにします。
新しいベクトルには 1001 個の成分があり、成分 1 から 200 には元のベクトル T が、成分 801 から 1000 には T の共役が含まれています。各成分間は 0 に設定されています。
4. 信号 T のフーリエ変換を求めます。
Re関数を使用して、虚部の小さな切り捨て誤差を除去します。ノイズはその変換 T を構築することで生成され、これには 1 個目から 200 個目の成分のランダム位相と単位マグニチュードが使用されます。
5. 変換後の信号をプロットします。
6. response関数を使用して、HamL をフィルタするためのベクトル ZT の応答を取得します。
7. ZT の最初の 800 成分と R の最後の 800 成分を使用して、複素信号 z2·を作成します。
フーリエ変換ベクトル ZT の最初の 800 成分·をベクトル a2 に保存します。
応答ベクトル R の最後の 800 成分をベクトル b2 に保存します。
複素信号 z2 を定義します。
8. dft 関数を使用して、信号 z2 の離散フーリエ変換を計算します。
ベクトルの場合、dft 関数と廃止された CFFT 関数の間のスケール係数は 1/P になります。
9. 信号 z2 の離散フーリエ変換の絶対値をプロットします。
変換領域内の信号の生成に使用された元の 200 個の点がここに示されています。スペクトルの上半分は実質的にゼロなので、Hilbert 変換器フィルタはその役割を果たしました。
これは役に立ちましたか?