ドキュメンテーション

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

residuez

Z 変換による部分分数展開

構文

[r,p,k] = residuez(b,a)
[b,a] = residuez(r,p,k)

説明

residuez では、2 つの多項式の比で表される離散時間システムが部分分数展開型または剰余型に変換されます。また、部分分数展開から元の多項式係数への逆変換も行います。

メモ

多項式の比の部分分数展開は、数値的に不良設定問題です。分母多項式が複数根をもつ多項式に近い場合は、丸め誤差を含むデータ内の小さな変更によって、結果として得られる極や留数に大きな変更が発生する場合があります。代わりに、状態空間または極-零点表現を使用してください。

[r,p,k] = residuez(b,a) では、次の型の 2 つの多項式 b(z) と a(z) の比を部分分数展開して、留数、極、直接項が求められます。ベクトル b および a では、離散時間システム b(z)/a(z) の多項式の係数が z の降べきの順で指定されます。

B(z)=b0+b1z1+b2z2++bmzmA(z)=a0+a1z1+a2z2++anzn

重根がなく、a > n-1 の場合、以下のようになります。

B(z)A(z)=r(1)1p(1)z1++r(n)1p(n)z1+k(1)+k(2)z1++k(mn+1)z(mn)

返される列ベクトル r は留数、列ベクトル p は極の位置、行ベクトル k は直接項をそれぞれ含みます。極の数は、次のように表されます。

n = length(a)-1 = length(r) = length(p)

length(b)length(a) より小さい場合、直接項の係数ベクトル k は空になります。大きい場合には、以下のようになります。

length(k) = length(b) - length(a) + 1

p(j) = ... = p(j+s-1) が多重度 s の極の場合、展開は次の型の項を含むことになります。

r(j)1p(j)z1+r(j+1)(1p(j)z1)2++r(j+sr1)(1p(j)z1)s

3 つの入力引数と 2 つの出力引数をもつ [b,a] = residuez(r,p,k) では、部分分数展開が、行ベクトル b および a に係数をもつ多項式に変換し直されます。

MATLAB® 基本モジュールの関数 residue は、residuez と非常に似ています。この関数では、residuez の場合のような z 領域の離散時間ではなく、ラプラス領域 ([1]を参照) の連続時間の部分分数展開が計算されます。

すべて折りたたむ

次の伝達関数で記述される 3 次の IIR ローパス フィルターに対応する部分分数展開を計算します。

分子と分母を多項式の畳み込みとして表します。

b0 = 0.05634;
b1 = [1  1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];

b = b0*conv(b1,b2);
a = conv(a1,a2);

部分分数展開の留数、極および直接項を計算します。

[r,p,k] = residuez(b,a)
r = 3×1 complex

  -0.1153 - 0.0182i
  -0.1153 + 0.0182i
   0.3905 + 0.0000i

p = 3×1 complex

   0.7230 + 0.5224i
   0.7230 - 0.5224i
   0.6830 + 0.0000i

k = -0.1037

伝達関数の極と零点をプロットし、今求めた極を重ね合わせます。

zplane(b,a)
hold on
plot(p,'^r')
hold off

再度 residuez を使用し、伝達関数を再構成します。

[bn,an] = residuez(r,p,k)
bn = 1×4

    0.0563   -0.0009   -0.0009    0.0563

an = 1×4

    1.0000   -2.1291    1.7834   -0.5435

アルゴリズム

residuez では、MATLAB の基本モジュール関数と部分分数展開法を適用して、b および a から rp、および k が求められます。以下のようになります。

  • length(b) > length(a)-1 の場合、deconv (多項式除算法) を使用して、直接項 a が求められます。

  • p = roots(a) を使用して極が求められます。

  • 重複極を求め、重複度に基づいて極を並べ替えます。

  • 重複根でない極 pj に対して、1/(1 - pjz−1) を b(z)/a(z) に乗算し、結果として得られる有理関数を z = pj で評価して、剰余が求められます。

  • 重複極に対する留数は、次の式から求められます。

    S2*r2 = h - S1*r1
    

    ここで、r2 には \ が使用されます。h は換算された b(z)a(z) のインパルス応答、S1 はその列が非重複根からなる 1 次システムのインパルス応答である行列 r1 は非重複根の留数を含んだ列です。行列 S2 の各列は、インパルス応答です。重複度 sj の各根 pj に対し、S2 には以下の各システムのインパルス応答を表す sj 列が含まれます。

    11pjz1,1(1pjz1)2,,1(1pjz1)sj

    ベクトル h と行列 S1 および S2 は、n + xtra 行をもちます。ここで、n は根の総数で、内部パラメーター xtra は既定の設定では 1 に設定され、方程式系の冗長度の度合いを決定します。

参考文献

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

R2006a より前に導入