人工知能に関する断創録スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。Learning、Kerasに関する記事が多いです。Response)フィルタをためしてみよう。IIRフィルタでもローパス、ハイパスなどのようなフィルタが作れる。FIRフィルタよりタップ数を小さくすることができるためより高速なフィルタになるのが利点のようだ。IIRフィルタの定義式は、x(n)は入力信号でy(n)は出力信号。FIRフィルタとの違いは、過去の出力信号がフィードバックされる点。と過去の「出力信号」が使われている。A(z)とB(z)はフィルタ係数のZ変換の式がそのまま入る。IIRフィルタの設計IIRフィルタの設計は、FIRフィルタのときのように単に逆フーリエ変換するだけではできないようで、双一次変換という手法を使う。変数がsのアナログフィルタを設計し、変数がzのデジタルフィルタに変換するという方法のようだ。いうアナログフィルタを用いるのが一般的とのこと。天下りだが、二次のバターワースフィルタ(バターワース特性)は、と変数sの関数で表される。高次のバターワースフィルタを用いるほど理想特性に近いフィルタになる。高次のバターワースフィルタの式は参考文献を参照。このバターワースフィルタの式からローパスフィルタ(LPF)、ハイパスフィルタ(HPF)、バンドパスフィルタ(BPF)、バンドストップフィルタ(BSF)をそれぞれ作るには、変数sを次のように置き換える。式をよく見るとLPFとHPF、BPFとBSFは逆数の関係にあるようだ。これでアナログフィルタができた。次に、アナログフィルタの変数sをデジタルフィルタの変数zに置き換える。Wikipediaだと2/Tという比例定数が付いているのだけどこれはなくてもよいのかな?参考文献だとついてない。上の式の周波数fはアナログフィルタの周波数であることに注意。デジタルフィルタの周波数とは違うようでアナログフィルタの周波数f_aとデジタルフィルタの周波数f_dの間には下の関係がある。カットオフ周波数はデジタルフィルタの周波数で表すのが普通なので、フィルタに周波数を指定するときは上の式でアナログフィルタの周波数に変換する必要がある。上の式をもとにガシガシ計算してローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、バンドストップフィルタのH(z)を計算してみた。ローパスフィルタがしがし計算すると最終的にH(z)は次式になる。ここで、フィルタ係数はとなる。見るのもおぞましい式(笑)だけど導出はそんなに難しくない。普通に代入してzの次数ごとに項をまとめるだけ。最後に、分母の定数項が1になるように分子分母を割るのがミソ。b(2)となっていることもわかる。IIRの式を見ればわかるようにa(0)は使わない(コードでは使わないけど1.0を代入)。三次のバターワースフィルタも計算してみたらP=3、Q=3となって3個前までの信号を見てた。FIRフィルタの係数の数は桁違いに多かったのとは対照的だなぁ。実際にプログラムを書いて試してみよう。&quot;whitenoise2.wav&quot;)残りのフィルタの計算結果は、式書くの面倒なので省略・・・導出して、コードと比較してみるとよいかも?参考文献にはすべての式が載っている。IIRの周波数特性を表示してみるとちゃんとカットオフ周波数1000Hzで減衰していることがわかる。FIRよりなだらかだけど2次のフィルタならこんなもので十分なのかな?何よりFIRに比べてフィルタ係数が圧倒的に少ない(FIRでは数百個だったけどIIRはたったの5個)ので計算も高速のようだ。音声も高音のシャーがなくなってゴーになっているのが確認できた。»プロフィールid:aidiary人工知能とその関連分野に興味があります。Blog|ブログを報告する。