第2部 第 9章 信号処理関数充実! カチャカチャサッ! Python スクリプトによる FIR フィルタ係数の生成 高橋 知宏 0 0 n n n n 1 1 −1 遅延が有限 なので応答 はその範囲 に収まる 1 −1 −1 ⋮ ⋮ −1 ⋮ ⋮ −1 N (a)FIR フィルタ ⋮ ⋮ ⋮ N ⋮ N ⋮ −1 フィードバック・ ループがあるので 無限に応答が続く (b)IIR フィルタ 図 1 おさらい…代表的なディジタル・フィルタ 無線信号処理でFIRフィルタを使う理由 ディジタル・フィルタにはいくつかの方式がありま す.代表的なものが FIR フィルタと IIR フィルタです. 図 1 に構成を示します. FIR(Finite Impulse Response)はその名前の通り サンプル値 タップ係数 0 1 2 3 × × × × 0 1 2 3 … N × … N フィルタ結果の y =a x +a x +a x +……a x 0 0 0 1 1 2 2 N N サンプル値 0 一つずらす 1 2 3 0 1 2 … N … N+1 N … フィルタ結果の y =a x +a x +a x +……a x 0 1 1 2 2 3 N N+1 次のサンプル値 1 ずらす量を変えると間引き (デシメーション)が行える 以上をすべてのサンプル値について繰り返す 図 2 参考…FIR フィルタの計算方式 86 入力に対して有限時間遅延の範囲で応答が得られま す. 一 方 IIR(Infinite Impulse Response)は, な ぜ Infinite= 無限かというと,内部に出力から入力に戻 すフィードバックの経路があるために,一度応答が生 じるといつまでもゼロになることがないからです. 今回のシステムのように,フィルタは,不要信号の 減衰だけではなく,サンプリング・レート変換が重要 な役割になります.この場合,FIR フィルタを選択す るのが合理的です. ▶理由:間引きが楽にできる レート変換の際に間引き(デシメーション)を行い ますが,FIR であれば計算量が減らせます. FIR では入力に対する出力への因果が,入力のサン プル値に係数を掛けた和です.間引きでサンプル値が 不要になるなら,そのサンプル値そのものを計算する 必要がなくなります.参考に図 2 に FIR の計算方法を 示します. IIR の場合にはフィードバックがあるため,そのよ うなメリットが得られません. スクリプト言語 Python で 可能なフィルタ信号処理 ● 信号処理関数 scipy.signal FIR フィルタの設計には,いろいろな設計ツールが 提供されています.今回は scipy という Python によ 2015 年 7 月号
© Copyright 2024 ExpyDoc