転移標本を用いたFIRフィルタ設計プログラム(Scilab)
- Scilabで作成した、逆フーリエ変換と転移標本を用いたFIRフィルタ設計のサンプルプログラムです. Scilab Ver.5.5.2で動作確認をおこなっています.
- FIRフィルタ係数をフーリエ変換するとフィルタの周波数特性が得られます. ならば、フィルタの周波数特性の仕様の逆フーリエ変換がFIRフィルタの係数となります. 仕様に対する、近似誤差の分布を制御するのに転移標本を用いています.(転移標本を用いてより良いフィルタ特性を実現するための拘束条件を与えています)
- フィルタのタップ長は255タップ、周波数0〜2πの範囲内256点で周波数特性の仕様を与えています.
- 通過帯域の利得1、阻止帯域の利得0としてフィルタ仕様を与えるのに対して、肩部分で中間の値を設定するのが転移標本です. 転移標本の最適値は試行錯誤的に求めます. 転移標本が無いとどうなるかは、自分で試してみてください.
- タップ長に十分な余裕があれば、当然ながら二乗誤差を最小にするような設計アルゴリズムを用いた方が特性の良いフィルタを設計できます.
- フィルタ係数設計の途中で、データの並び替えの処理をおこなっています. これは逆フーリエ変換の性質に基づくもので、特別な意味はありません.
- 同様の簡易なFIRフィルタ設計の手法として、逆フーリエ変換と窓関数を用いた設計法があります. これらの手法の詳細はOppenheimの教科書(Discrete-Time Signal Processing)等を参照してください.
- ろくにコメントも入っていないプログラムですが、処理は大変簡単なものですので何をしているかは簡単に理解できるはずです.
- そこそこの特性のフィルタを極めて簡易に設計するには便利な手法ですが意外と知られていないようです.(検索エンジンを使って探しても日本語の情報はほとんど出てきません)
転移標本を用いたFIRフィルタ設計プログラム(Scilab) fir_transition_design.sce
フィルタの周波数特性の仕様
グラフ表示しているのは0〜πの範囲
いくつか値の異なる転移標本を与えている
試行錯誤的に設計の出来る転移標本の数は最大2〜3ヶ程度でしょう
設計したFIRフィルタ係数
設計したFIRフィルタの周波数特性
グラフはサンプリング周波数10000Hzとして描いている
転移標本の数と値によって特性が異なる