• ベストアンサー

デジタルフィルタ

ハイパスフィルタのプログラムをC言語で 作成したいのですが、デジタルフィルタは 初めてさわるのでよくわかりません。 そこでC言語でハイパスフィルタを作成したことが ある人がいたらどのようにプログラムを組めばいいか? 参考ソースプログラムや、 あるいはこの書籍が丁寧でわかりやすく説明してあった、 というような情報をいただけないでしょうか?

  • e5523
  • お礼率75% (6/8)

質問者が選んだベストアンサー

  • ベストアンサー
  • jklm324
  • ベストアンサー率46% (137/292)
回答No.1

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

関連するQ&A

  • ディジタルフィルタの設計

    線形位相(直線位相)を持つハイパスフィルタを設計したいのですが、どういう手順でやれば良いでしょうか? 最終的にはプログラムとして実現しますが、現段階はそのアルゴリズムを考え中です。 このようなディジタルフィルタを実際に設計したことのある方などいましたら、ご教授ください。

  • ガウシアンフィルタのCプログラム

    画像を平滑化する手法にガウシアンフィルタというものがあります。 現在、このガウシアンフィルタをCで作成しようとしていますが、いまいち分かりません。 自分なりに調べてみたところ、平滑化の移動平均フィルタやメディアンフィルタに関しては様々な書籍やサイトがあるのですが、ガウシアンフィルタに関してはあまり見つかりませんでした。 行いたい処理は、簡単に次の通りです。 画像ファイルの読み込み ↓ フィルタ処理 ↓ 処理後の画像をファイル出力 ガウシアンフィルタに関して詳しく書いてある書籍やサイトがあればお教え願います。できれば、ソースプログラムも書いてあると助かります。 当方、参考書籍として、「C言語で学ぶ実践画像処理-井上他」という本を使用しています。

  • デジタルフィルタ

    デジタルフィルタとはどういうものなのですか?教科書を見るとデジタルフィルタを説明する前にデジタル信号処理について説明するものばかりで、デジタルフィルタについての説明が内容に見えますが。

  • デジタルフィルタとアナログフィルタ

    アナログフィルタでハイパスフィルタをCRで組んだ場合、 DC成分がコンデンサによってカットされると思います。 デジタルフィルタについては、現在勉強中ではありますが、 計測関係のソフトウェアで、FIRフィルタのハイパスが設計 でき、実際にUSB経由でのデータを取り込みながら、試しに 使用してみましたが、DC成分がカットされませんでした。 デジタルフィルタでは、DC成分がカットされるような 設計はできないものと考えてよろしいのでしょうか? (イメージ的にはデジタルオシロのACカップリング時の 動きを期待していましたが・・・) 識者の方のご意見・ご回答をお願い致します。

  • IIRフィルタとFIRフィルタ

    無限インパルス応答(IIR)フィルタと有限インパルス応答(FIR)フィルタとはアナログでいう、バンドパスフィルタやローパスフィルタ、ハイパスフィルタのデジタル版みたいなものであることは分かるのですが、 無限、有限というのは何を表しているのでしょうか? Wikipediaなどに解説はしてあるのですが、どうしても理解することが出来ません。 どなたか易しく説明して頂けないでしょうか?

  • エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタの掛け方を教えてください。

    タイトルどおりなのですが、エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタをかけたいです。 ご存知の方、よろしくお願いします。

  • プログラムでノッチフィルタの作り方

    表題の通り、ノッチフィルタをプログラムで作りたいと思います。 既にローパスフィルタとハイパスフィルタはモジュールとしてあります。 出来れば、このフィルタの組合せでノッチフィルタを作りたいのですが良い方法を 教えてもらえませんか。

  • デジタルフィルタについて

    大学の研究でデジタルフィルタを作ることになりました。 そこでdsPICを用いたフィルタを作ろうと思い勉強をし始めたのですが、 http://dacom1.ele.tottori-u.ac.jp/joho/digital/notch/notch.html のページにある適応ノッチフィルタの構成図のu(n)のあたりが延々とループしてしまうような気がしてしまい、どのようにプログラムを組んだらよいのか今一わかりません。 この構成図の見方やdsPICでのプログラミングの組み方などをご教示ください。 よろしくお願いします。

  • FIRフィルタに関する周波数変換について教えてくだ

    FIRフィルタに関するフィルタ係数の周波数変換について教えてください. 遮断角周波数ωcのハイパスフィルタのフィルタ係数を求める場合, まず最初,遮断角周波数ωcのローパスフィルタの係数h(LP)を求め, その結果を使って,ハイパスフィルタの係数h(HP)は h(HP)=(-1)^n*h(LP) という変換によって求められるのですが, なぜ,ローパスフィルタのフィルタ係数の奇数の項の符号を反転させるだけで, ハイパスフィルタのフィルタ係数になるのでしょうか? とても困っています. 宜しくお願いします.

  • C言語での平滑化フィルタ

    OPenCVを使わずにC言語で3×3の平滑化フィルタを作成したと思っています。 それで、プログラム例を参考にして作ろうと、googleなどで検索しているのですけれども、なかなかファイルの読み込みから平滑化処理まで全てを書いてくれているプログラム例が見つかりません。 もしご存知の方がいらしたら、コンパイル可能な状態のプログラム例を教えて頂けないでしょうか? 環境はwindows VISTAでVisual Studio2008を使っています。 画像サイズなどはこだわりません。

専門家に質問してみよう