- 締切済み
FIRフィルタ
FIRフィルタのフィルタ係数の計算式がわかりません。 例えば、サンプリング周波数100kHzとカットオフ周波数10kHzの値だけで計算できるのでしょうか?できなかったら簡単な例でもいいので教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- guuman
- ベストアンサー率30% (100/331)
管理者さんは前回の回答を削除し今回の回答は削除しないでください さらに抜け・修正ミスが有ったので修正します H(f)をFIRの周波数伝達関数として D(f)を近似したい周波数伝達関数として 周波数域の重み関数をW(f)(値域は0以上実数)としたときに e=∫[0≦f≦fs]df・|H(f)-D(f)|^2・W(f) ただしfsはサンプリング周波数であり D(f)は実数部が偶関数であり虚数部が奇関数の周期fsの周期関数です eはタップ係数の関数になりますから それらタップ係数での偏微分を0とおけば 連立一次方程式ができそれを解けばいいのです W(f)をいろいろ変えて希望の特性を得るようにします
- guuman
- ベストアンサー率30% (100/331)
誤字脱字があったので修正します H(f)をFIRの周波数伝達関数として D(f)を近似したい周波数伝達関数として 周波数域の重み関数をW(f)としたときに e=∫[0≦f≦fs]df・(H(f)-D(f))^2・W(f) ただしfsはサンプリング周波数であり D(f)は実数部が偶関数であり虚数部が奇関数の周期fsの周期関数です eはタップ係数の関数になりますから それらタップ係数での偏微分を0とおけば 連立一次方程式ができそれを解けばいいのです W(f)をいろいろ変えて希望の特性を得るようにします
- guuman
- ベストアンサー率30% (100/331)
等リップル型はRemezの方法 もっとも優秀な方法は重み関数つき誤差の2乗積分値を最小にする方法 窓関数法やそれ以外の方法は語るべき価値も有りません もっとも優秀な方法だけを説明すると H(f)をFIRの周波数伝達関数として D(f)を近似したい周波数伝達関数として 周波数域の重み関数をWとしたときに e=∫[0≦f≦fs]df・|H(f)-D(f)|・W(f) ただしfsはサンプリング周波数であり D(f)は実数部が偶関数であり虚数部が奇関数です eはタップ係数の関数になりますから それらタップ係数での偏微分を0とおけば 連立一次方程式ができそれを解けばいいのです W(f)をいろいろ変えて希望の特性を得るようにします
FIR フィルタの伝達関数は零点しか持たないので、LC フィルターの関数論的設計を流用できない場合が多い。 逐次近似の手法で、要求スペックに対し特性の最適化を実行するのがふつう。 例えば、下記ページを参照。 http://dl.cybernet.co.jp/matlab/support/manual/r14/toolbox/signal/filterd6.shtml
- foobar
- ベストアンサー率44% (1423/3185)
サンプリング周波数、カットオフ以外に、少なくとも ・どれくらいの遮断特性(遮断領域で周波数が2倍になったらどれくらい減衰をおおきくするか)が必要か ・遮断領域での最大減衰量 くらいは必要かと思います。 こうやって、周波数領域での特性が決まったら、次は時間領域でのインパルス応答を計算して、これをサンプリング周期でサンプリングした数値から、FIRの(次数と)各係数が決定できるかと。