IIRフィルタの係数変更方法の疑問

このQ&Aのポイント
  • IIRフィルタについて疑問があり、係数変更方法について教えてください。
  • IIRフィルタの1次版の図1の係数について、サンプリング周波数を変更して使いまわす方法が分かりません。
  • IIRフィルタの係数変更方法について教えてください。アナログの伝達特性はわかりません。
回答を見る
  • ベストアンサー

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枚目スライドの右図)

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

  • ベストアンサー
noname#101087
noname#101087
回答No.4

>係数をカットアンドトライで決めながら元の周波数特性のグラフのような形になるまでひたすら試行するということでしょうか? 一般には「カットアンドトライ」になるのでしょう。 今の例は次数が低いので、三点だけ強引にフィットさせるよう未定係数{a1, b0, b1}を求める、という手もありそう.... 。 EXCEL 使用のシミュレーション例を一つだけ。   H(Z) = (b0+b1*Z)/(1-a1*Z) を想定。< z^(-1) を Z と略記 >   a0=2.0, b1=b2=0.5 のとき、100kHz サンプリングでカットオフ(3dB ダウン)がほぼ 10kHz 。このとき、25kHz にてほぼ 10dB ダウン。 50kHz サンプリングで 25kHz までほぼ合わせようとすると、   a0=5.0, b1=3.0, b2=1.0 あたりになりそうです。お試しのほどを。

pony666
質問者

お礼

178tallさん、早速の回答ありがとうございます。 ExcelでもIIRのシミュレーションができるんですね! 係数も調べていただいてありがとうございます。 私はMATLABを使用してシミュレーションをやっていて 今ちょっとできない状況なのであとで試してみます。 数回にわたりご解答いただきありがとうございました。

その他の回答 (4)

noname#101087
noname#101087
回答No.5

蛇足です。 EXCEL 使用のシミュレーション例をもう一つだけ。   H(Z) = (b0+b1*Z)/(a0+a1*Z)  ただし、Z = exp(-jθ) として Butterworth 一次特性の H(Z) を想定し、カットオフ(3dB ダウン)だけ合わせた場合です。 (1) サンプリングが 100kHz(θ/π=2)、カットオフ(3dB ダウン)が 10kHz(θc/π=0.2) ならば、   a0=-2.08, a1=4.08, b0=b1=1.00 (2) サンプリングが 50kHz(θ/π=2)、カットオフ(3dB ダウン)が 10kHz(θc/π=0.4) ならば、   a0=-0.38, a1=2.38, b0=b1=1.00 ------------------------------- いずれも、ナイキスト周波数(θ/π=1) にて減衰が無限大。 [a0, a1 の算定式]   K=SQRT{(1+cosθc)/(1-cosθc)} として、   a0=1-K   a1=1+K

pony666
質問者

お礼

178tallさん、お世話になっております。 追加情報ありがとうございました。 a0,a1の算定式に当てはめて計算してみると 確かに178tallさんの係数を求めることが できました。SIMに関しては後日やって 見ようと思います。 また調べてみるとExcellを使ったIIRやFIR の設計について書いてある参考書もあるみたい ですね。今度見てみようと思います。 色々と教えていただきありがとうございました。

noname#101087
noname#101087
回答No.3

>同じ回路を違うサンプリング周波数でも流用したい場合は計算式中のサンプリングの項に代入する値を変更し、再計算することでその特性を得られるIIRの係数が求まると思います。...... >伝達関数が分からず、計算済みのIIRの係数が分かっているのですがここからサンプリング周波数を変えて同じ動作をさせるというのは不可能なのでしょうか? サンプリング周波数 = 96kHzで使っていた LPF は、ナイキスト周波数(48kHz)を軸として対称な周波数特性ですね。 また、サンプリング周波数 = 48kHz だとそのナイキスト周波数(24kHz)に対して対称な周波数特性になります。 つまり「サンプリング周波数を変えて同じ動作をさせるというのは不可能」じゃありませんか ? 入力スペクトルを 24kHz 以下に制限できるのなら、もとの LPF の 24kHz 以下の周波数特性に近似するという手はありそうですけど。 (もとの IIR 係数に周波数変換を施せば良い、といものではなさそうです。いかがでしょうか)

pony666
質問者

お礼

178tallさん、いつもご解答ありがとうございます。 なるほど。確かにサンプリングを変えると折り返し点が変わって きてもともとの特性そのままと言うわけにはいかないですね。 今回は96kHzサンプリングで設計されたフィルタ(例えばカットオフ10kHz) を48kHzサンプリングにして同じく10kHzのカットオフを持たせるという ことで 入力は24kHz以内に制限されているので問題ないと思います。 >LPF の 24kHz 以下の周波数特性に近似するという手はありそうですけど。 これは係数をカットアンドトライで決めながら元の周波数特性の グラフのような形になるまでひたすら試行するということでしょうか?

noname#101087
noname#101087
回答No.2

>例えば、サンプリング周波数96kHzで使っていたLPFをカットオフ周波数などの特性を変えずにサンプリング周波数48kHzで使いたい ..... ディジタル・フィルタの周波数特性は周期関数ですから、「全特性を変えずに」サンプリング周波数を下げるのは不可能じゃありませんか ? たとえば、もとの周波数特性の半周期分に近似するとか.... 。

pony666
質問者

補足

通常(かどうかは分かりませんが・・)、デジタルフィルタを設計する際、実現したいアナログでの回路での伝達特性が分かると、そこから双一次変換を用いてデジタルフィルタでの係数を算出します。 ここで計算式の中にサンプリング周波数のパラメータがあり、もし同じ回路を違うサンプリング周波数でも流用したい場合は計算式中のサンプリングの項に代入する値を変更し、再計算することでその特性を得られるIIRの係数が求まると思います。 今回はアナログ回路の伝達関数が分からず、計算済みのIIRの係数が分かっているのですがここからサンプリング周波数を変えて同じ動作をさせるというのは不可能なのでしょうか?

noname#101087
noname#101087
回答No.1

>... サンプリング周波数だけを変更して使いまわしたいのですが係数をどのように変更したらよいのか分からずに困っています。 サンプリング周波数だけ変更し係数をそのままにしておけば、規準化周波数特性は不変です。 係数を変更するとその特性も変わりますから、再計算せねばなりません。 .... って、回答になってないのかな。

pony666
質問者

お礼

ご回答ありがとうございます。 説明が分かりづらくて申し訳ありませんでした。 今回は例えば、サンプリング周波数96kHzで使っていたLPFを カットオフ周波数などの特性を変えずにサンプリング周波数 48kHzで使いたいということです。 単にサンプリング周波数を変えてしまうと上記例ですとカットオフも 当然低域にずれてきてしまうので係数の変更をしようと考えました。 アナログの伝達関数など分かっていればそこから計算する方法は 分かったのですが、アナログ特性が未知なのでどうしてよいものか・・・。

関連するQ&A

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

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

  • IIR型の低域通過フィルタについて

    次のような問題を出されたのですが、解き方がさっぱり分かりません。 どなたか解答例をお願いします。 遮断周波数がπ/3となるIIR型の低域通過フィルタを設計したい。 (a)アナログバタワースフィルタから、双1次z変換によってデジタルフィルタの設計をしたい。このとき、アナログフィルタにおける遮断周波数はどうなるか。 (b)上記の遮断周波数で設計した3次バタワースフィルタの伝達関数は添付画像の式のようになる。対応するデジタルフィルタの伝達関数H(z)を示せ。 (c)|H(z)|の周波数特性を求めよ。

  • IIR型の低域通過フィルタについて

    次のような問題を出されたのですが、中間試験に備えて解き方をマスターしたいと思っています。 どなたか解答例をお願いします。 遮断周波数がπ/3となるIIR型の低域通過フィルタを設計したい。 (a)アナログバタワースフィルタから、双1次z変換によってデジタルフィルタの設計をしたい。このとき、アナログフィルタにおける遮断周波数はどうなるか。 (b)上記の遮断周波数で設計した3次バタワースフィルタの伝達関数は添付画像の式のようになる。対応するデジタルフィルタの伝達関数H(z)を示せ。 (c)|H(z)|の周波数特性を求めよ。 どなたか、回答よろしくお願いします。

  • 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)|が周波数特性となるそうです。 ただし、能力不足のため式の変形ができず周波数特性を求めることができません。 わかるかたご回答よろしくお願いします

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

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

  • デジタルフィルタ(IIR)

    無限インパルス応答(IIRフィルタ)について、サルでもわかるようにメカニズム・カットオフ周波数について教えて下さい。又は、サルでもわかるように解説された書籍・HPなど御存知でしたら教えて頂けると幸いです。

  • IIRディジタルフィルタの縦列接続変換について

    4次のIIRフィルタ(1次帯域阻止フィルタ)を設計したのですが、 量子化誤差の観点から、2次IIRフィルタの縦列接続への変換を考えています。 (4次のままだと、係数は固定小数点で54bitほど必要なようです;) そのため、伝達関数の分母、分子それぞれの5次多項式を2次多項式に分解したいのですが、 どのような方法があるのでしょうか? 自分なりに途中まで求めてみたのですが・・・ (1)被除数を a0 + a1*Z^-1 + a2*Z^-2 + a3*Z^-3 + a4*Z^-4 除数を b0 + b1*Z^-1 + b2*Z^-2 と置き、多項式の除法を行う。 (商、余り には係数an,bnが含まれた形になる) (2)余りが0になる係数an,bnを求める。 (余りは2項になるので、連立方程式を解く必要がある) ・・・ここまでやってみたのですが、 4次IIR以上のことを考えると、冗長なため、少々気力が尽きてきました; 便利な手法があればご教授いただけないでしょうか。 以上、よろしくおねがいします。

  • FIRフィルタ

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

  • デジタルフィルタ

    デジタルフィルタを設計して、サンプリング周波数1000Hz、カットオフ周波数100Hzに設定してフィルタ係数を計算して作製して、本当にカットオフ周波数100Hzになるか、サンプリング周波数1000Hzまで測定をして振幅特性や周波数特性を出したら、先生に、まだ理解していないと怒られました。理解してないところとはどこのことだと思いますか?私の見解はサンプリング周波数の1/2まで行くと、ひずみが発生すると言うことかなぁと思っているのですが。どうでしょうか?

  • IIRフィルタの応答を高速にする方法

    入力信号をIIRフィルタに通すと、一般に、出力が落ち着くまで時間がかかります。 この時間を短縮する方法はありますでしょうか。 例えば、一定振幅 A Hz + B HzのSin波を、中心周波数がA Hzで帯域幅が狭く次数の高いIIR BPFに通すと、出力信号の振幅は、しばらく0が続き、途中からグワっと大きくなり、やがて一定のA Hzに落ち着きます。 帯域幅や次数を変えないで、信号を入れた直後から、振幅一定のA Hzの出力を得たい(応答を早める)のですが、可能でしょうか。 アドバイス、お願いいたします。