関数 > 信号処理 > デジタルフィルタ > 例: Remez 交換による FIR フィルタ
例: Remez 交換による FIR フィルタ
remez関数は FIR フィルタ設計の Remez 交換アルゴリズムを実装します。
アルゴリズムと例については、Rabiner/Gold 著『Theory and Application of Digital Signal Processing』 (Prentice-Hall, Inc.) および Parks/Burrus 著『Digital Filter Design』 (Wiley-Interscience) を参照してください。
ローパスフィルタ
1. 通過帯域で 1、阻止域で 0 になる応答を定義し、通過帯域と阻止域の境界間を補間して直線で遷移させます。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
一般的に、周波数グリッドの点の数はフィルタの長さの 8 から 10 倍とし、周波数は 0 から 0.5 の範囲 (ただし 0.5 には達しない) で一様に増加する値にします。応答の定義では、帯域境界および各帯域の誤差に割り当てる重みを定義する必要があります。このアルゴリズムは、周波数レンジ [0, 0.5] で最大加重誤差を最小化します。
2. 通過帯域と阻止域の境界を次のように定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 通過帯域、阻止域、遷移帯域の重みを定義します。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
4. 必要な応答を返す関数を周波数の関数として定義します。各グリッド点での計算結果を応答ベクトルに格納します。
クリックしてこの式をコピー
クリックしてこの式をコピー
5. 対応する帯域の重みを各グリッド点に割り当てる重みベクトルを定義します。
クリックしてこの式をコピー
6. 関数 remez およびlengthを使用して、フィルタ係数を計算します。
クリックしてこの式をコピー
クリックしてこの式をコピー
7. gain関数を使用して、この奇数の長さのフィルタについて、0 と 0.5 におけるゲインによって与えられる通過帯域と阻止域の最大誤差を計算します。
クリックしてこの式をコピー
クリックしてこの式をコピー
8. 0 から 5 までの関数と周波数応答をプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
(1 - δ1) の線が通過帯域の境界 pb と交差する点と、δ2 の線が阻止域の境界 sb と交差する点を含む、10 個の極値周波数があります。各帯域の極値周波数で誤差が交互に発生しています。2 つの誤差 d が等しくない場合のプロットを表示するには、上記のフィルタ定義で阻止域の重みを 0.5 に変更します。
帯域通過フィルタ
1. 各遷移帯域と通過帯域での応答の関数を加算することで応答関数を定義します。
クリックしてこの式をコピー
2. ベクトル化演算子を使用して一度にグリッド全体に filter 関数を適用します。重みは均一です。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 45 個の係数を使用してフィルタを生成します。
クリックしてこの式をコピー
クリックしてこの式をコピー
4. フィルタの周波数応答をプロットします。
クリックしてこの式をコピー
クリックしてこの式をコピー
これは役に立ちましたか?