高次フィルタ
WEB上の設計ツールを使って、IIR形式の高次バタワースフィルタを作成します。
ソースコードやプロジェクトファイルのダウンロードはこちら →iir.zip
(1)雑音入り正弦波による試験用のプログラムです。 | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ブロック図 | ![]() | |||||||||||||||||||||||||||||||||
プログラム | coef = "iir_coef.csv"; // IIRフィルタ係数ファイル dim = 4; // IIRフィルタ段数 dtMsec=1; proc { signal = Ain( 0, 0, 1 ); // アナログ入力ch0 test = w_sin( period, 0, 1 ) + gauss( sd ); // 試験信号 if mode>0 { IIRin = signal; } // mode>0 ならアナログ入力 else { IIRin = test; } // mode=0 ならシミュレーション IIRout = iir( IIRin, dim, coef ); // IIRフィルタ Aout( 0, 0, 1, IIRout ); // アナログ出力ch0:フィルタ出力 Aout( 1, 0, 1, test ); // アナログ出力ch1:試験信号出力 } | |||||||||||||||||||||||||||||||||
記号 |
以下の関数、信号、パラメータを使っています。 ソースコードで宣言したパラメータの値を操作パネルから変更はできません。
| |||||||||||||||||||||||||||||||||
説明 |
石川高専山田洋二研究室ホームページ
http://dsp.jpn.org/dfdesign/のメニューから
「IIRフィルタ設計」を選択し、設計パラメータを入力して「設計する」ボタンを押します。 AprocSのフィルタ定義に合わせるために以下の変換を行います。 C i 2 = -b 2 C i 3 = k * a 0 C i 4 = k * a 1 C i 5 = k * a 2 i=1, 2, 3, 4 これにより、以下のような4列の係数データを得ます。 上記のWEBデータをエクセルに貼り付けて変換し、CSV形式でファイル名 "iir_coef.csv" として保存しました。 | |||||||||||||||||||||||||||||||||
設定例 | ![]() | |||||||||||||||||||||||||||||||||
記録例 | ![]() |
(2)試験部を削除した実用のプログラムです。 | |
---|---|
ブロック図 | ![]() |
プログラム | coef = "iir_coef.csv"; // IIRフィルタ係数ファイル dim = 4; // IIRフィルタ段数 dtMsec=1; proc { IIRin = Ain( 0, 0, 1 ); // アナログ入力ch0 IIRout = iir( IIRin, dim, coef );// IIRフィルタ Aout( 0, 0, 1, IIRout ); // アナログ出力ch0:フィルタ出力 } |