メインコンテンツ

polystab

    説明

    b = polystab(a) は、係数ベクトル a から成る多項式を単位円に関して安定化させ、1 より大きい値をもつ根を単位円の内側に反転させ、係数ベクトル b から成る安定化後の多項式を返します。

    すべて折りたたむ

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

    h = fir1(25,0.4);
    
    h_linphase = islinphase(h)
    h_linphase = logical
       1
    
    
    h_minphase = isminphase(h)
    h_minphase = logical
       0
    
    

    polystab を使用して、線形位相フィルターを最小位相フィルターに変換します。フィルターが最小位相でなく線形位相をもっているかどうかを確認します。

    hmin0 = polystab(h);
    hmin = hmin0/norm(hmin0)*norm(h);
    
    hmin_linphase = islinphase(hmin)
    hmin_linphase = logical
       0
    
    
    hmin_minphase = isminphase(hmin)
    hmin_minphase = logical
       1
    
    

    フィルターの位相応答をプロットします。

    phasez(h,1)
    hold on
    phasez(hmin,1)
    hold off
    legend("h","hmin")

    Figure contains an axes object. The axes object with title Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Phase (radians) contains 2 objects of type line. These objects represent h, hmin.

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

    [hMag,hW] = freqz(h,1);
    [hminMag,hminW] = freqz(hmin,1);
    
    plot(hW,mag2db(abs(hMag)),".-")
    hold on
    plot(hminW,mag2db(abs(hminMag)))
    hold off
    grid on
    xlabel('Normalized Frequency (\times\pi rad/sample)')
    ylabel('Magnitude (dB)')
    legend("h","hmin")

    Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent h, hmin.

    入力引数

    すべて折りたたむ

    入力多項式係数。ベクトルとして指定します。各要素 (a1a2、…、am+1) は、通常、z 領域における多項式の係数を表します。

    A(z)=a1+a2z1+amz(m1)+am+1zm

    データ型: single | double
    複素数のサポート: あり

    出力引数

    すべて折りたたむ

    安定化後の多項式係数。行ベクトルとして返されます。

    アルゴリズム

    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 より前に導入

    参考