Signal Processing Toolbox    

周波数領域ベースのモデリング

関数invfreqsおよび関数invfreqzは、freqsおよびfreqzの逆演算を実行する関数、すなわち、与えられた複素周波数応答に一致するように設定した設定次数のアナログまたはディジタル伝達関数を求めます。つぎの例題では、invfreqzを示していますが、この考察はinvfreqsにも適用されます。

単純なディジタルフィルタの周波数応答からオリジナルのフィルタ係数を求めるには、つぎのようにします。

周波数ベクトルw はラジアン/秒単位ですが、この周波数は、等間隔である必要はありません。invfreqzは、この周波数データを適合する任意の次数のフィルタを求めます。3次のフィルタの場合には、つぎのようになります。

invfreqzinvfreqsは、共に実数係数のフィルタを設計します。正の周波数fのデータ点に対して、これらの関数は周波数応答をfと-fの両方で適合させます。

デフォルトでは、invfreqzは誤差方程式法を用いて、データから最良のモデルを同定します。これは、次式

で連立1次方程式を作成し、MATLABの\演算子で解くことにより、baを求めるものです。ここで、A(w(k)) およびB(w(k)) は、それぞれ周波数w(k)での多項式aおよびbのフーリエ変換であり、nは周波数点数(hおよびwの長さ)です。wt(k) により、周波数点間での誤差に対して重みを付けることができます。ステートメント

は、重みベクトルを含んでいます。このモードでは、invfreqzから得られるフィルタが安定であるという保証はありません。

invfreqzは、実際の周波数応答点と希望の応答との間の2乗誤差に重みを付けたものの和を最小にする直接的な問題を解く優れた("出力誤差")アルゴリズムを使っています。

このアルゴリズムを使用するには、つぎのように重みベクトルパラメータの後に反復回数を入力引数として設定します。

得られるフィルタは常に安定しています。

つぎのグラフで、最初のアルゴリズムと誤差に重みを付け、繰り返し回数を変更した2番目のアルゴリズムの結果をオリジナルのButterworthフィルタと比較します。

数値的な適合の優位性を検証するには、つぎのようにします。


 時間領域ベースのモデリング リサンプリング