Main Content

poly2rc

予測フィルター多項式の反射係数への変換

構文

k = poly2rc(a)
[k,r0] = poly2rc(a,efinal)

説明

k = poly2rc(a) では、予測フィルター多項式 a が、対応するラティス構造の反射係数に変換されます。a は実数または複素数で、a(1) は 0 にできません。a(1)1 でない場合、poly2rc は a(1) で予測フィルター多項式を正規化します。k はサイズが length(a)-1 の行ベクトルです。

[k,r0] = poly2rc(a,efinal) では、最終予測誤差 efinal に基づいてゼロラグ自己相関 r0 が返されます。

すべて折りたたむ

予測フィルター多項式 a と最終予測誤差 efinal が指定された場合に、それに対応するラティス構造とゼロラグ自己相関の反射係数を求めます。

a = [1.0000 0.6149 0.9899 0.0000 0.0031 -0.0082];
efinal = 0.2;
[k,r0] = poly2rc(a,efinal)
k = 5×1

    0.3090
    0.9801
    0.0031
    0.0081
   -0.0082

r0 = 5.6032

制限

任意の i に対して abs(k(i)) == 1 の場合、反射係数を求めることは、条件が適切に整っていない問題になります。この場合、poly2rc ではいくつかの NaN が返され、警告メッセージが表示されます。

ヒント

a の根が、すべて単位円の内側にあるかどうかを簡単にすばやく確認するには、k の各要素の大きさが 1 未満かどうかを確認します。

stable = all(abs(poly2rc(a))<1)

アルゴリズム

poly2rc では、以下の再帰関係が実装されます。

k(n)=an(n)an1(m)=an(m)k(n)an(nm)1k(n)2,m=1,2,,n1

この関係は、レビンソン再帰法 (参考文献[1]) に基づいています。この関係を実装するために、poly2rca の最初の要素を空行列とし、その後の要素を反転してループ状に上の計算を実行します。ループ i を反復するごとに、この関数では以下のことが実行されます。

  1. k(i)a(i) と設定します。

  2. 上記の 2 番目の関係をベクトル a の 1 ~ i の要素に適用します。

    a = (a-k(i)*fliplr(a))/(1-k(i)^2);
    

参考文献

[1] Kay, Steven M. Modern Spectral Estimation. Englewood Cliffs, NJ: Prentice-Hall, 1988.

拡張機能

バージョン履歴

R2006a より前に導入