ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

polystab

構文

b = polystab(a)

説明

polystab では、単位円に対して多項式が安定化されます。これによって、1 より大きい根が単位円の内側に射影されます。

b = polystab(a) では、安定化された多項式を含む行ベクトル b が返されます。a は、通常 z 領域における多項式係数ベクトルです。

A(z)=a(1)+a(2)z1++a(m+1)zm.

すべて折りたたむ

ウィンドウ法を使用して、正規化されたカットオフ周波数 ラジアン/サンプルをもつ 25 次の FIR フィルターを設計します。フィルターが最小位相でなく線形位相をもっているかどうかを確認します。

h = fir1(25,0.4);

h_linphase = islinphase(h)
h_linphase = logical
   1

h_minphase = isminphase(h)
h_minphase = logical
   0

polystab を使用して、線形位相フィルターを最小位相フィルターに変換します。フィルターの位相応答をプロットします。

hmin = polystab(h)*norm(h)/norm(polystab(h));

hmin_linphase = islinphase(hmin)
hmin_linphase = logical
   0

hmin_minphase = isminphase(hmin)
hmin_minphase = logical
   1

hfvt = fvtool(h,1,hmin,1,'Analysis','phase');
legend(hfvt,'h','hmin')

2 つのフィルター処理が同じ振幅応答をもつことを検証します。

hfvt = fvtool(h,1,hmin,1);
legend(hfvt,'h','hmin')

アルゴリズム

polystab では、多項式の根が求められ、単位円の外側に見つかった根が単位円の内側に写像されます。

v = roots(a);
vs = 0.5*(sign(abs(v)-1)+1);
v = (1-vs).*v + vs./conj(v);
b = a(1)*poly(v);

参考

R2006a より前に導入