関数 > 信号処理 > デジタルフィルタ > 例: ゼロ位相フィルタ
例: ゼロ位相フィルタ
filtfilt関数を使用し、前方後方フィルタリングモデルを使用してフィルタのゼロ位相応答を計算します。
1. butter関数を使用して、2 次アナログ Butterworth フィルタの係数を取得します。
クリックしてこの式をコピー
クリックしてこの式をコピー
2. iirlow関数を使用して、カットオフ周波数 0.25 のローパス IIR フィルタの係数を取得します。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. gain関数とarg関数を使用し、フィルタのマグニチュード応答と位相応答を定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
4. p を使用して f のすべての値におけるフィルタのマグニチュード応答と位相応答を再定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
5. マグニチュード応答をプロットしてから、マーカーを使用してカットオフ周波数でのマグニチュードを表示します。
クリックしてこの式をコピー
6. 位相応答をプロットしてから、マーカーを使用してカットオフ周波数での値を表示します。
クリックしてこの式をコピー
7. サンプルパルス信号を定義してプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
この入力は、信号の中点でのインパルスから成ります。
8. filtfilt 関数を使用してゼロ位相出力を計算します。
クリックしてこの式をコピー
9. dft関数を使用して、両方の信号のフーリエ変換を計算することでフィルタが信号に与える影響を確認してから、Y のマグニチュードと位相をプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
10. mag 関数を使用し、XY のマグニチュードの比から求められる変換関数から、カットオフが予想どおり Butterworth の形状になっていることを確認します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
11. マグニチュード応答と変換関数をプロットします。
クリックしてこの式をコピー
12. arg 関数を使用して XY の主偏角間の位相差を定義します。
クリックしてこの式をコピー
13. マグニチュード応答と、XY の間の位相差をプロットします。
クリックしてこの式をコピー
filtfilt 関数を実行した結果、プロットに示されるように、信号のマグニチュードのフィルタが 2 倍になりますが、元のフィルタでは非線形の位相であるのに対して位相シフトはゼロになります。
位相プロットを確認するときには、位相 -2π と位相 0 は等しいということを念頭に置いてください。Y のマグニチュードが非常に小さい箇所では、カットオフよりはるかに高い周波数と同様に、数値ノイズによって位相が無意味になることがあります。
これは役に立ちましたか?