ドキュメンテーション

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

bilinear

アナログ デジタル フィルター変換用の双一次変換

構文

[zd,pd,kd] = bilinear(z,p,k,fs)
[zd,pd,kd] = bilinear(z,p,k,fs,fp)
[numd,dend] = bilinear(num,den,fs)
[numd,dend] = bilinear(num,den,fs,fp)
[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs)
[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs,fp)

説明

"双一次変換" とは変数の数学的なマッピングで、デジタル フィルター処理において s (アナログ) 平面を z (デジタル) 平面にマッピングする標準的な方法です。この変換では、従来のフィルター設計法を使用して設計されたアナログ フィルターが離散の等価なフィルターに変換されます。

双一次変換では、以下の式によって s 平面が z 平面にマッピングされます。

H(z)=H(s)|s=2fsz1z+1.

この変換では、以下の式を使用して、jΩ 軸 (Ω = -∞ から +∞) が単位円周上 (ejw、範囲は ω = –π から π) に繰り返しマッピングされます。

ω=2tan1(Ω2fs).

関数 bilinear では、プリワープを指定するオプションのパラメーター Fp を指定することができます。fp は "一致する" 周波数、すなわちマッピング処理前後で周波数応答が厳密に一致する周波数を Hz で示します。プリワーピング モードでは、双一次変換によって以下の式を使用して s 平面が z 平面にマッピングされます。

H(z)=H(s)|s=2πfptan(πfpfs)z1z+1.

プリワーピング オプションを選択した場合、bilinear では以下の式を使用して、jΩ 軸 (Ω = –∞ から +∞) が単位円周上 (e、ω = -π から π) に繰り返しマッピングされます。

ω=2tan1(Ωtan(πfpfs)2πfp).

プリワーピング モードでは、bilinear によって s 平面の周波数 2πfp (ラジアン/秒単位) が、z 平面の正規化周波数 2πfp/fs (ラジアン/秒単位) に一致されます。

関数 bilinear では、3 つの異なる線形システム表現を扱うことができます。すなわち、零点-極-ゲイン、伝達関数、および状態空間型です。

零点-極-ゲイン

[zd,pd,kd] = bilinear(z,p,k,fs)

[zd,pd,kd] = bilinear(z,p,k,fs,fp) では、zp および k で指定される s 領域の伝達関数が等価な離散関数に変換されます。入力 z および p は零点と極を含む列ベクトルで、k はスカラー ゲイン、fs はサンプリング周波数 (Hz) です。関数 bilinear は、列ベクトル zdpd、およびスカラー kd に、離散的に等価な関数を返します。オプションの一致する周波数 fp は Hz で、プリワーピングに使用されます。

伝達関数

[numd,dend] = bilinear(num,den,fs) および

[numd,dend] = bilinear(num,den,fs,fp) では、num および den で指定される s 領域の伝達関数が離散の等価な関数に変換されます。行ベクトル num および den では、以下のように、分子および分母の係数が s の降べきの順でそれぞれ指定されます。Bs を分子の多項式に、As を分母の多項式にします。伝達関数は、次のように表されます。

B(s)A(s)=B(1)sn++B(n)s+B(n+1)A(1)sm++A(m)s+A(m+1)

fs は Hz のサンプリング周波数です。関数 bilinear では、離散相当が、行ベクトル numddend に z の降べきの順 (z–1 の昇べきの順) で返されます。fp は、プリワーピング用のオプションの一致する周波数を Hz で表したものです。

状態空間

[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs) および

[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs,fp) では、行列 ABCD の連続時間状態空間システムが変換されます。

x˙=Ax+Buy=Cx+Du

が、次の離散時間システムに変換されます。

x[n+1]=Adx[n]+Bdu[n],y[n]     =Cdx[n]+Ddu[n].

fs は、Hz のサンプリング周波数です。関数 bilinear は、離散と等価なシステムを行列 AdBdCdDd で返します。オプションの一致する周波数 fp は Hz で、プリワーピングに使用されます。

すべて折りたたむ

5 dB の通過帯域リップルと 90 dB の阻止帯域減衰量をもつ 6 次の楕円アナログ ローパス フィルターを設計します。bilinear を使用して、これを離散時間 IIR フィルターに変換します。

Fs = 0.5;                             % Sampling frequency
[z,p,k] = ellipap(6,5,90);            % Lowpass filter prototype
[num,den] = zp2tf(z,p,k);             % Convert to transfer function form
[numd,dend] = bilinear(num,den,Fs);   % Analog to digital conversion
fvtool(numd,dend)                     % Visualize the filter

診断

関数 bilinear では、分子の次数は分母の次数以下でなければなりません。この条件が満たされない場合、関数 bilinear によって以下が表示されます。

分子は分母より高い次数にはできません。

関数 bilinear で零点-極-ゲイン型と伝達関数型の線形システムを区別するには、最初の 2 つの入力パラメーターは同じ向きのベクトルでなければなりません。この条件が満たされない場合、関数 bilinear によって以下が表示されます。

最初の 2 つの引数は、同じ方向でなければなりません。

アルゴリズム

すべて折りたたむ

bilinear では、提供した入力線形システムの形式に応じて、2 つのアルゴリズムのいずれかが使用されます。1 つのアルゴリズムは零点-極-ゲイン型を、もう 1 つのアルゴリズムは状態空間型を処理します。伝達関数表現に対し、関数 bilinear は状態空間型に転換し、変換を実行し、結果として得られた状態空間システムを伝達関数型に逆変換します。

零点-極-ゲイン アルゴリズム

零点-極-ゲイン型のシステムでは、関数 bilinear によって以下の 4 つのステップが実行されます。

  1. fp が存在する場合、以下のようにプリワーピングが行われます。

    fp = 2*pi*fp;
    fs = fp/tan(fp/fs/2)
    

    そうでない場合は fs = 2*fs となります。

  2. 次のステートメントを使用して、±∞ で零点が削除されます。

    z = z(finite(z));
    
  3. 次のステートメントを使用して、零点、極、およびゲインの変換が行われます。

    pd = (1+p/fs)./(1-p/fs);    % Do bilinear transformation
    zd = (1+z/fs)./(1-z/fs);
    kd = real(k*prod(fs-z)./prod(fs-p));
    
  4. -1 に零点が追加され、結果として得られるシステムの分子と分母の次数が等しくなるようにします。

状態空間アルゴリズム

状態空間型のシステムでは、関数 bilinear によって以下の 2 つのステップが実行されます。

  1. fp が存在する場合は

    λ=πfptan(πfp/fs).

    に、fp が存在しない場合は λ=fs にします。

  2. 以下を使用して、ABC、および D に対して、AdBdCd、および Dd を計算します。

    Ad=(IA12λ)1(I+A12λ),Bd=1λ(IA12λ)1B,Cd=1λC(IA12λ)1,Dd=12λC(IA12λ)1B+D.

参考文献

[1] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, pp. 209–213.

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

R2006a より前に導入