FIRフィルタの遅延量補正とIIRフィルタの安定性について

このQ&Aのポイント
  • FIRフィルタの遅延量補正とIIRフィルタの安定性について説明します。
  • IIRフィルタの安定性について、Scilab等の結果と同じであればフィルタ係数も同じで不安定にはならないと考えられます。
  • FIRフィルタでも構わない場合、波形の遅延量を補正する方法を教えてください。
回答を見る
  • ベストアンサー

FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きた

FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きたいのですが。  双一次z変換を用いていくつかのIIRフィルタを作る事が出来ました。Scilbが持つIIR関数と比較して同じ結果になっています。IIRフィルタがフィルタ係数によっては不安定=発信したりする、というのはScilab等の結果と同じになる→フィルタ係数も同じ→不安定にならない。と思ってよいのでしょうか?。例えばですが、あるサンプリング周波数の波形データをフィルタする為に、同じサンプリング周波数で作ったImplus波形をIIRフィルタに放り込んで周波数応答を確認したら、実際にフィルタする波形データの最初から最後までその周波数応答でフィルタされると私は理解しているのですが。  私のフィルタを使う用途の場合は、フィルタの計算速度は特に制限は無く、速いに越した事はありませんが得られた結果が正確な事が大切なので、安定性や係数誤差の事を考えるとIIRフィルタではなくFIRフィルタでも構わないのですが、FIRフィルタの場合だとタップ数が多くなるので波形の遅延量が無視出来ません。フィルタを通した波形は次定数fastのレベル波形にして100Hz位で出すとは言え、IIRよりは数秒かコンマ数秒遅延した結果になると思います。そのような場合、遅延量を補正するとしたらどうしたら良いのでしょうか?。個人的にはタップ数が(IIRの場合は次数が)遅延量と思っているのですが。  宜しくお願い致します。

  • 1take
  • お礼率75% (3/4)

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

  • ベストアンサー
  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.1

前半ですが、信号に対してフィルタのインパルス応答を畳み込むのと、直接フィルタリングするのは線形領域であれば等価です。 要するにインパルス突っ込んで発散しなければ安定でいいと思います。ただ、数値の上限に引っかかる可能性はあります。 リアルタイム処理では無いのであれば、FIRフィルタは位相遅延無しを実現できます。 つまり時刻tの値を計算するために時刻[t-n]から[t+n]までの線対象なフィルタを使えばいいです。 因果率を満たす必要があるのであれば、そういう方法は使えませんが、その場合はフィルタの特性によるものであって、IIRだったら遅延が少ないというものでも無い気がします。 ちょっと遅延の定義が具体的では無いので突っ込んで話はできないですね。

1take
質問者

お礼

お礼が遅れてすみませんでした。 ありがとうございました。

1take
質問者

補足

回答ありがとうございます。 すみません、「数値の上限に引っかかる可能性」というのはどういう場合なのでしょうか?。  遅延について説明不足でした。例えばですが、100Hz以下の成分しかない波形が有って、それを遮断周波数をもっと上で、要はフィルタを通そうが通すまいが同じ波形が出てくる場合でもフィルタを通すと元の波形よりも時間的にずれて出てきますが、IIRフィルタですと次数が少ないのでずれ量もそう大きく無いのですが、FIRフィルタですとタップ数が多いのでちょっと問題があります。  ScilabですとFIRフィルタの関数は入力した配列数よりもタップ数-1の数だけ多く出てきます。ちょっと試してみたのですが、タップ数の半分の値からグラフを描くと元の波形と一致します。実際に観測された時間よりもデータ的にずれてしまうのは避けたいのです。  申し訳ないのですが回答していただけると幸いです。

関連するQ&A

  • FIRフィルタ

    FIRフィルタのフィルタ係数の計算式がわかりません。 例えば、サンプリング周波数100kHzとカットオフ周波数10kHzの値だけで計算できるのでしょうか?できなかったら簡単な例でもいいので教えてください。

  • IIRフィルタについて

    IIRフィルタで疑問があり、過去のページを調べてもわからなかった ので新たに質問を作りました。 今検討しているのは下記HPの図1のIIRフィルタの1次版(a1,b1,b0のみ) で伝達関数(Z領域)、サンプリング周波数、各係数が分かっています。 (逆に言うとこれしか分かってません) ここで上記の資産を流用して新たにサンプリング周波数 だけを変更して使いまわしたいのですが係数をどのように 変更したらよいのか分からずに困っています。 (アナログの伝達特性などはわかりません) どなたか分かる方、教えていただけないでしょうか。 よろしくお願いします。 http://adsp2191.hp.infoseek.co.jp/misc/009_difficult_sp.shtml もしくは http://www.ics.es.yamanashi.ac.jp/~hanawa/asp/ppt/asp-6.ppt(39枚目スライドの右図)

  • バンドパスIIRフィルタの低域におけるエラー

    バンドパスIIRフィルタの低域におけるエラー 申し訳ないのですが教えて下さい。  波形データのオクターブバンド分析結果を出す為に、ScilabやOctaveなどMatlabクローンのソフトを使ってバンドパスIIRフィルタを使用して各バンドでフィルタを通過させるのですが、ナイキスト周波数に対して通過域が低域にありすぎるとエラーを起こすのか、結果が出てきません。サンプリング周波数の値を変えて遮断周波数との差を縮めればそのようなエラーは起きません。例えば、480Hzサンプリングでも、1Hzと2Hzの中心周波数のバンドパスフィルタは値が帰っていなかったり、波形がおかしかったりします。  フィルタ次数は4で行っていて、1などに下げればそのナイキスト周波数と遮断帯域の差ではエラーを起こさなくなりますが、もっと差が広がった場所では起きますし、JISで定めるオクターブフィルターの遮断性能を考えると次数を下げる訳にも行きません。  本家Matlabはもっていないので判りませんが、会社のLabviewですと問題はありません。解決策はデサンプリングしてエラーを起こす帯域ではサンプリング周波数を落とすしか無いのかな?と思うのですが、実際はどうなのでしょうか?お教え頂けると幸いです。 宜しくお願い致します。

  • FIRフィルタの製作

    FIRフィルタの製作で困っていることがあります。 FIRフィルタをローパスとかバンドパス的な遮断の点からではなく 位相をずらす観点から、製作したいと思いつつも なかなか調べても遮断周波数を決めてタップ係数を求める手法 しか見つかりません。 初めてのフィルタ製作もあって、できるだけツールからではなく 手計算で求めたいです。 ご存知の方がいらっしゃったら、ご教授ください。

  • FIR,IIRフィルタの伝達関数に対する周波数特性を求めるには?

    FIRやIIRフィルタの伝達関数を式変形すると、周波数特性や移送特性が求められるようなのですが、伝達関数からの式変形がわからず困っています。 周波数特性を求めたいFIR,IIRフィルタの伝達関数は以下のようになっています。 直接型FIRフィルタの伝達関数 H(z)=h(0) + h(1)・z^-1 + h(2)・z^-2 + ・・・ h(x):係数(定数) http://momiji.i.ishikawa-nct.ac.jp/dfdesign/gfir/gfir.pdf 縦続型のIIRフィルタの伝達関数 H(z)=k1・(a10 + a11・z^-1 + a12・z^-2)/(1 + b11・z^-1 +b12・z^-2) ・k1・(a10 + a11・z^-1 + a12・z^-2)/(1 + b11・z^-1 +b12・z^-2) ・・・・ kx,axx,bxx:係数(定数) http://momiji.i.ishikawa-nct.ac.jp/dfdesign/giir/giir.pdf ここで、 z=exp(jwT)を代入し、 H(exp(jwT))=|H(w)|exp(jθ(w)) と式変形した際の|H(w)|が周波数特性となるそうです。 ただし、能力不足のため式の変形ができず周波数特性を求めることができません。 わかるかたご回答よろしくお願いします

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

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

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

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

  • FIRフィルタ

    FIRフィルタの設計に関して、ホワイトノイズを入力信号として使用すると、各周波数成分が独立に増減しているか確認できない、つまり、別の周波数成分に影響を与えていないことを確認できないようなのですが、どのように実験すればよいのでしょうか?

  • バタフライ型FIRフィルタの逆フィルタの求め方

    バタフライ型FIRフィルタの逆フィルタの求め方について教えてください。 X, Yは(互いに相関が無い)入力、X', Y'はFIRフィルタの出力とします。 また、Hxx, Hxy, Hyx, Hyyはタップ係数とします 従ってこれらは以下の関係式となっています。 X'=Hxx*X+Hxy*Y Y'=Hyx*X+Hyy*Y このとき、逆フィルタはどのように求めればよいのでしょうか。 つまり、(X', Y')=>(X, Y)を求める方法が知りたいと思っています。 ノイズ等は無いとし、タップ長は任意とします。 (タップ長は適当に3程度と仮定してください) ご教授頂ければと存じます。宜しくお願い致します。

  • 信号処理FIRフィルタに関して

    こんにちわ。デジタルフィルタに関するご質問です。 振動工学を勉強しているのですが、回転機械から検出した時系列加速度信号をFIR(ローパス)フィルタに通し、高周波ノイズを除去しようとしています。 FIRフィルタとは、「継続接続された一連の遅延器からなり、各遅延器出力の重み付け和を出力する」と教科書等によく書かれておりますが、例えば、周波数領域でのフィルタの振幅特性が最適なものが300次で求めたものだったとして、フィルタのインパルス応答h(t)を求めて、600個の時系列入力データをフィルタリングする場合、インパルス応答を二個つなげて、各時系列データにあてはめていくので良いのでしょうか? また、その場合、インパルス応答の継ぎ目は連続になっているべきなのでしょうか? もし、原理的にマズいことや、根本から間違えているようならば、ご指導下さいますよう、お願いします。

専門家に質問してみよう