- ベストアンサー
デジタルフィルタ
ハイパスフィルタのプログラムをC言語で 作成したいのですが、デジタルフィルタは 初めてさわるのでよくわかりません。 そこでC言語でハイパスフィルタを作成したことが ある人がいたらどのようにプログラムを組めばいいか? 参考ソースプログラムや、 あるいはこの書籍が丁寧でわかりやすく説明してあった、 というような情報をいただけないでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
デジタルフィルタのプログラミング自体は、遅延を表わすZ-1(-1はZの右肩に小さく書かれる)と係数と加算を表わす+を○で囲んだもので表わされる構成図をプログラムとして実現するだけですので何も難しくはないと思います。遅延Z-1のところを次のサンプルの処理まで記憶しておくという点を除けば単なる乗算と加算の組み合わせだけです。ある程度のC言語でのプログラミング経験があれば難しくはないと思います。 ただし、リアルタイム処理になるとバッファ処理が必要になるので複雑になります。これはデジタルフィルタ自体の問題でないので割愛します。 おそらく一番の問題は構成はどのようにすればいいのか、次数や係数はどのように決定すればいいのかだと思います。大きく分けるとFIRとIIRの2つの構成方法がありますが、それぞれに長所と短所があります。まずはデジタル・フィルタに関する書籍をじっくりをお読みすることをお勧めします。検索すればデジタルフィルタに関する書籍は沢山あると思いますが、選ぶときはC言語のプログラムが載っているかではなく、内容が分かり易いあるいは質問者様の要求仕様・応用分野が近いなどの基準で選択するのがいいと思います。 フィルタの概要が理解でき形式と次数を決定したら、次の問題は係数を決めることです。これについては、フィルタの要求仕様から係数を算出してくれるサイトあるいはソフトがありますので検索してみてください。まずFIRかIIRかを決定してから、検索する方がいいかもしれません。(どちらか一方しかサポートしていない場合も結構あります) デジタル・フィルタに関する書籍は決して簡単ではありませんので、理解するのに根気とある程度の時間が必要なことは考慮しておいてください。