「みんな教えて! 選手権!!」開催のお知らせ

すいませんがIIRのデジタルフィルタの計算式についてわかる人がいましたら教えてください。スポーツ関係をしていて、データ処理をエクセルで計算式を今作っているのですがどうもわかりません。

 2次のバターワースフィルタの計算式Y(n)=AX(n)+AX(n-1)+AX(n-2)+BY(n-1)+BY(n-2)と専門書に書かれていますがこの式でデータの反対からもフィルタを掛けていることになるのでしょうか?時間的なずれはなくなることですよね

 それと実際計算をするときには、初めのY(n-1)、Y(n-2)は、どのような値を入れたらいいのですか?

 よろしくお願いします

A 回答 (3件)

時間を逆に、、


なるほど
最初に
Yn=A Xn + AX(n-1) A X(n-2)+ B Y(n-1) + B Y(n-2)
という処理をnを増やす向きでしたあと
Zn= A Y(n) + A Y(n+1) + A Y(n+2) + B Z(n+1) B+ B Z(n+2)
という処理nを減らす向きでして、Znを最終的な出力として使うということかと。
これでしたら、haba999さんがご質問出かかれていたように、一回目の処理と2回目の処理で時間遅れをキャンセルさせて、最終的な信号ZとXの間の時間差を無くす処理でしょう。

フィルタの次数と、往復で何回かけるというというのは別の話になるかと思います。
(Yn=A Xn + AX(n-1) A X(n-2)+ B Y(n-1) + B Y(n-2) 自体は二次のフィルタですが、先に書いたように、出力信号と入力信号の間には時間差があります)

この処理が通常のデジタルフィルタで使われないのは、現在の出力を計算するために未来の入力を使う(因果律が成立しない、実時間で処理できない)ことと、同じフィルタを往復で使うので最終的に得られるフィルタの特性に若干の制約がある ことが理由かと思います。


以下余談

IIRでなくて、FIR形式のフィルタなら、往復の操作を
Zn= C(-k) x(n+k)+ +C(1) x(n+1)+C(0) x(n) + +C(1) x(n-1) + ... + C(k) x(n-k)
という具合にひとつにまとめれます。
で、このままだと、因果律を満たさないので、ちょいと変形して
z(m)=C(-k)x(m)+..+C(-1)x(m-k+1)+C(0)x(m-k)+..+C(k)x(m-2k)

と言う具合にすれば因果律を満たす(でも、出力は入力よりkだけ送れるけど)ようになります。
が、IIRだとこういうわけにいかない(無限の過去から出力信号が出てる)ので,,
    • good
    • 0
この回答へのお礼

何回も回答頂いて、ありがとうございました。

お礼日時:2005/04/28 11:00

フィルタの時間遅れ


・単純な移動平均とはフィルタの特性が違うので単純に比較はできません。
・Yn=A0Xn+A1X(n-1)+A2X(n-2)+B1Y(n-1)+B2Y(n-2)
の形式のフィルタは
 Yn=c0X(n)+c1X(n-1)+c2X(n-2)+...+ckX(n-k)+..
の形式ので置き換えることができます。(重み付移動平均で書きかえれます。)つまり、出力からの帰還があるIIRフィルタも、同じ(同程度の)特性をもった重み付移動平均と同じだけの時間遅れがあります。
(c1,c2,,,ck,,は、元のフィルタの係数(A,B)から計算することもできますし、元のフィルタにインパルス応答(X(0)=1,それ以外のXは0として、フィルタの出力Ynを求める)から決めることもできます。)

時間の進む向きと逆に、フィルタをかける
どういう文脈ででた記述かわからないので、、いくつか考えられることを。
a.フィルタが何かの入力や内部信号の推定に使われている。
観測したデータから、何か内部の状態や入力の状態を逆に求めるような使い方をするときには、時間をさかのぼるような使い方をすることもあるかと。
b.フィルタの動作の記述
フィルタの今の出力Ynを出すのに、現在の入力Xn以外に、過去の入力や出力を2点分さかのぼって X(n-1),X(n-2),Y(n-1),Y(n-2)使っています。この動作を表しているのかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございました。私の文章べたで分かりにくかったかもしれません。丁寧な解答ありがとうございました。

 「時間の進む向きと逆に、フィルタをかける。」このことについてもう一度書きます。一度、フィルタを掛けた値を時間経過を逆にしてもう一度フィルタを掛ける作業です.そして出てきた数値が二次のフィルタを掛けたことになる値と本にかかれていました。
 私の頭の中では1次、3次5次…は、フィルタを(正の時間軸、負の時間軸の順に)奇数回掛けること、2次、4次,6次…は、フィルタを(正の時間軸、負の時間軸の順に)偶数回掛けることと今まで思っていましたが違うのですね。

お礼日時:2005/04/27 12:27

・Y(n-1)などの初期値


通常は入力信号が入る前の出力は0でしょうから0を入れることが多いかと思います。(場合によっては、0以外の一定値を入れることもあるでしょうが)

・データの反対からもフィルタを、、
反対側からというか、出力側信号をフィルタの入力に戻す帰還が入っています。時間的な遅れはどうしても出るかと。

この回答への補足

回答ありがとうございます。

・Y(n-1)などの初期値:
 わかりました。やってみます

・データの反対からもフィルタ:
 私も出力側信号が入っているので時間的な遅れは、単純移動平均法よりは少ないと考えています。よくわからないのがバイオメカニクス系のフィルターを説明している本とかを見てみると、Y(n)=AX(n)+AX(n-1)+AX(n-2)+BY(n-1)+BY(n-2)を時間軸の進む方と終了から開始方向の反対にするように書かれています。デジタルフィルタの本では時間軸の進む方にしか計算式をするように書かれていません。素人の私は、混乱しています???

 参考にしている本は、「見てわかるディジタル信号処理」「ビギナーズデジタルフィルタ」、「スポーツバイオメカニクス20講」です。

補足日時:2005/04/26 10:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報