• ベストアンサー

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

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

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

  • ベストアンサー
  • guuman
  • ベストアンサー率30% (100/331)
回答No.4

H(f)= の式がどういう仕組みになっているのかよくわかりません。 c[n]がインパルス応答行列なのでしょうか?: c[n]は各整数n(0≦n≦N)について実数です あと、W(f)とD(f)、fs、fはどういう風に決めたらいいのか(何のパラメータか)もわかりませんでした。: fは周波数変数で設定するものでは有りません 示した積分範囲で示した式を積分するということです fsはサンプリング周波数です 設計時に自分で決めるものです fs=1000とするもよしfs=10000000とするもよし D(f)は自分が決めた周波数特性を与えたらいいのです しかしH(f)はfsの周期関数であって実部が偶関数虚部が奇関数になります つまり当然ですがそのような関数しか近似できないのです 例えば100Hz以上の周波数を通過させるようなハイパスフィルタの場合は それぞれのパラメータはどんな感じになるのでしょうか?: fs=1000Hzならば例えば D(f)=0(0<f<100)D(f)=1(100<f<500) W(f)=1(0<f<100)W(f)=0(100<f<140)W(f)=10000(140<f<500) Nは遮断特性が十分満足できるまで大きくする N=100でよい場合N=1000でもだめな場合有るでしょう 何処までの特性を出したいかで試行錯誤的に判断します 100<f<140の部分を狭くするとNを大きくしなければなりません その幅を0にするとNは相当に大きくしなければなりません

その他の回答 (4)

  • guuman
  • ベストアンサー率30% (100/331)
回答No.5

W(f)=10000(0<f<100)W(f)=0(100<f<140)W(f)=1(140<f<500) と修正 なお次のようにしても100<f<140に相当する部分の幅があればOK W(f)=1(0<f<100)W(f)=0(100<f<140)W(f)=1(140<f<500)

  • guuman
  • ベストアンサー率30% (100/331)
回答No.3

ちょっとと手直し(dfの抜けと≦を<に) フィルタの形は直線位相だとFIRになります H(f)=Σ[0≦n≦N]・c[n]・cos(2・π・n・f/fs) (奇数タップ数フィルタ:2・N+1) または H(f)=Σ[0≦n<N]・c[n]・cos(2・π・(n+1/2)・f/fs) (偶数タップ数フィルタ:2・N) 設計方法は 希望の特性をD(f)として △=∫[0<f<fs/2]df・(H(f)-D(f))^2・W(f) が最小になるようにする W(f)はどの帯域をどの程度近似するかの関数 通常遷移域を0とし減衰域を大きく通過域を小さくする W(f)=1でもいいが減衰特性が十分得られない N×Nまたは(N+1)×(N+1)の行列を係数行列とする連立1次方程式を解くことになる (評価式をC[n]で偏微分して0とすれば方程式が作れる) 係数が決まればプログラムで作るのはかけて足すの繰り返しをするだけの単純なものである 窓関数は使わないこと最適解ではなく求める方法を知らない人の妥協の産物だから

tokorotain
質問者

お礼

回答ありがとうございます。 教えていただいた内容を基にして、自分なりにやってみようとしましたが、よくわからない部分があったので できれば教えていただきたいと思います。 まず、直線位相を実現するにはFIRフィルタになるのはわかったのですが H(f)= の式がどういう仕組みになっているのかよくわかりません。 c[n]がインパルス応答行列なのでしょうか? あと、W(f)とD(f)、fs、fはどういう風に決めたらいいのか(何のパラメータか)もわかりませんでした。 例えば100Hz以上の周波数を通過させるようなハイパスフィルタの場合は それぞれのパラメータはどんな感じになるのでしょうか?

  • guuman
  • ベストアンサー率30% (100/331)
回答No.2

フィルタの形は直線位相だとFIRになります H(f)=Σ[0≦n≦N]・c[n]・cos(2・π・n・f/fs) (奇数タップ数フィルタ:2・N+1) または H(f)=Σ[0≦n≦N]・c[n]・cos(2・π・(n+1/2)・f/fs) (偶数タップ数フィルタ:2・N) 設計方法は 希望の特性をD(f)として △=∫[0<f<fs/2](H(f)-D(f))^2・W(f) が最小になるようにする W(f)はどの帯域をどの程度近似するかの関数 通常遷移域を0とし減衰域を大きく通過域を小さくする W(f)=1でもいいが減衰特性が十分得られない N×Nまたは(N+1)×(N+1)の行列を係数行列とする連立1次方程式を解くことになる 係数が決まればプログラムで作るのはかけて足すの繰り返しをするだけの単純なものである 窓関数は使わないこと最適解ではなく求める方法を知らない人の妥協の産物だから

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.1

Xwindowが使えるUnix, Linux環境でしたら、xdigfil http://line.to/mac/soft/xdigfil/ というフリーソフトで、FIRのハイパスフィルターを設計できます。

関連するQ&A

  • デジタルフィルタ

    FIRフィルタでは直線位相特性は実現が可能に対して、IIRフィルタは位相特性が実現困難なのは何でですか?フィードバックするからですか?

  • デジタルフィルタ

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

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

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

  • FIRフィルタ

    なぜデジタルフィルタのFIRフィルタは直線位相特性を持っているのでしょうか?

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

    ディジタルフィルタについて質問させていただきます。 私が勉強して得た知識として、FIRフィルタとIIRフィルタというものが代表的なものとしてあるのはわかったのですが、実用的な観点でいまいち双方のメリット・デメリットが見えてきません。 一応、FIRは位相ひずみがなく、IIRは次数を小さく出来るということはわかるのですが、実際使うとなったときに、どのような基準でFIRかIIRかということを選択するのでしょうか? どなたか、実用的にディジタルフィルタを用いている方がいらっしゃいましたら、実際の経験にもとづいて(例えば、こういう事例であれば、こちらのフィルタの特性の方が用いやすい、などなど・・・)教えていただければありがたく思います。 以上、よろしくお願いいたします。

  • DSPのIIRフィルタについて

    お世話になります。 DSPでIIRフィルタの勉強をしてますが、1つわからないことがあります。 FIRフィルタに比較して小規模な回路で実現できる点は良いのですが、 直線位相性がないということです。 直線位相性がないということは、波形がひずむということですが、 このことを考えるとどういう場合に使えて、どういう場合に使っては いけないのかが、わかりません。 以上、宜しくお願い致します。

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

    はじめてデジタルフィルタの設計をすることになりました。 決まっている事項は以下のようになります。 ・25msごと(40Hz)にA/D変換されたデータが出力されます。 ・出力データを使って波形を描きます。 ・描く波形はおよそ周波数は0~10Hzのものです。 ・係数を算出して、C言語のプログラムに組み込みます。 今のところ決まっているのはこのくらいです。 自分でも勉強していますが、 FIRは計算が比較的簡単で、安定しているが、次数が多くなる。 IIRは複雑で、不安定になることもあるが、次数が少なくてよい。 FIRでは、窓関数やREMEZ法などリプルを小さくする方法がある。 IIRでは、バタワース、チェビシェフ、ベッセルなどの方法がある。 程度のことしかわかっていません。 どのように設計していけばいいかわかりません。 経験のある方、良いアドバイスをお願いします。 また何かフリーツールで設計できるものがあれば教えてください。

  • 理想的なフィルタの位相特性

    ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタを実験で実際にくみ、利得や位相特性を実際に読み取りグラフなどにしました。 ~位相特性についてて~ 入力と出力で位相差が生じて、通過域においては位相差は小さく 阻止域においては位相差は大きくなっていました。 僕の考察では、理想的なフィルタの 通過域において位相差は0[deg] 阻止域において位相差は180[deg] と考察したんですが間違っているでしょうか。 しかし、直感的に答えただけで根拠がありません。 位相差が生じると出力が弱まる性質があるのでしょうか どなたかヒントだけでもいいんで教えてください><

  • プログラムは組めないけど設計はできる

    会社の先輩で、プログラムは組めないけど、システムの設計はできる人がいます。 僕はまだコツコツとプログラムを組んでいる段階なので、基本設計や詳細設計に関わった事はないのですが、実際にそういう人って多いのでしょうか? 逆にUMLを使った設計となるとたぶん話は変わってきますよね? みなさんのまわりにはそういう方いますか?

  • コサイン・ロールオフ・フィルタの重み付け

    コサイン・ロールオフ・フィルタについてご質問があります。 ディジタルフィルタで実現する場合、所望の信号にシフトレジスタに重み付け値をかけてすべて足し算してフィルタ出力するという形ですが、この重み付けの値はどのようにして決められるのでしょうか? すみませんが、ご教授願います。 なお、お勧めの書籍等ありましたら教えていただけると幸いです。