関数 > 信号処理 > その他の変換関数 > 例: 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 変換器フィルタはその役割を果たしました。
これは役に立ちましたか?