このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
bilinear
アナログ デジタル フィルター変換用の双一次変換
構文
説明
例
チェビシェフ I 型アナログ フィルターを使用したバンドパス IIR フィルター設計
6 dB の通過帯域のリップルをもつ 10 次のチェビシェフ I 型フィルターのプロトタイプを設計します。プロトタイプを状態空間形式に変換します。
[z,p,k] = cheb1ap(10,6); [A,B,C,D] = zp2ss(z,p,k);
プロトタイプをバンドパス フィルターに変換し、同等のデジタル フィルターが のレートでサンプリングされた場合に 100 Hz および 500 Hz でエッジをもつ通過帯域をもつようにします。変換に際しては、プリワープされた帯域エッジ と (rad/s 単位)、中心周波数 、および帯域幅 を指定します。
fs = 2e3; f1 = 100; u1 = 2*fs*tan(f1*(2*pi/fs)/2); f2 = 500; u2 = 2*fs*tan(f2*(2*pi/fs)/2); [At,Bt,Ct,Dt] = lp2bp(A,B,C,D,sqrt(u1*u2),u2-u1);
freqs
を使用してアナログ フィルターの周波数応答を計算します。振幅応答とプリワープされた周波数帯域エッジをプロットします。
[b,a] = ss2tf(At,Bt,Ct,Dt); [h,w] = freqs(b,a,2048); plot(w,mag2db(abs(h))) xline([u1 u2],"-",["Lower" "Upper"]+" passband edge", ... LabelVerticalAlignment="middle") ylim([-165 5]) xlabel("Angular frequency (rad/s)") ylabel("Magnitude (dB)") grid
関数 bilinear
を使用して、サンプル レート をもつデジタル バンドパス フィルターを作成します。
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,fs);
デジタル フィルターを状態空間形式から 2 次セクションに変換し、freqz
を使用して周波数応答を計算します。振幅応答と通過帯域エッジをプロットします。
[hd,fd] = freqz(ss2sos(Ad,Bd,Cd,Dd),2048,fs); plot(fd,mag2db(abs(hd))) xline([f1 f2],"-",["Lower" "Upper"]+" passband edge", ... LabelVerticalAlignment="middle") ylim([-165 5]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)") grid
楕円フィルターの離散時間表現
5 dB の通過帯域リップル、90 dB の阻止帯域減衰量、および のカットオフ周波数をもつ 6 次の楕円アナログ ローパス フィルターを設計します。
fc = 20;
[z,p,k] = ellip(6,5,90,2*pi*fc,"s");
アナログ楕円フィルターの振幅応答を可視化します。カットオフ周波数を表示します。
[num,den] = zp2tf(z,p,k); [h,w] = freqs(num,den,1024); plot(w/(2*pi),mag2db(abs(h))) xline(fc,Color=[0.8500 0.3250 0.0980]) axis([0 100 -125 5]) grid legend(["Magnitude response" "Cutoff frequency"]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)")
関数 bilinear
を使用して、アナログ フィルターを離散時間 IIR フィルターに変換します。サンプル レートを に、プリワーピング一致周波数を に指定します。
fs = 200; fp = 20; [zd,pd,kd] = bilinear(z,p,k,fs,fp);
離散時間フィルターの振幅応答を可視化します。カットオフ周波数を表示します。
[hd,fd] = freqz(zp2sos(zd,pd,kd),[],fs); plot(fd,mag2db(abs(hd))) xline(fc,Color=[0.8500 0.3250 0.0980]) axis([0 100 -125 5]) grid legend(["Magnitude response" "Cutoff frequency"]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)")
入力引数
z
, p
, k
— アナログ領域のゼロ、極およびゲイン
列ベクトル、スカラー
s 領域伝達関数のゼロ、極およびゲイン。2 つの列ベクトルおよびスカラーとして指定します。
fs
— サンプル レート
正のスカラー
サンプル レート。正のスカラーで指定します。
num
, den
— アナログ領域の分子と分母の係数
行ベクトル
アナログ伝達関数の分子と分母の係数。行ベクトルとして指定します。
A
, B
, C
, D
— アナログ領域の状態空間行列
行列
s 領域の状態空間表現。行列として指定します。システムに p 個の入力と q 個の出力があり、n 個の状態変数により記述される場合、A
は n 行 n 列、B
は n 行 p 列、C
は q 行 n 列、D
は q 行 p 列になります。
データ型: single
| double
fp
— 一致する周波数
正のスカラー
一致する周波数。正のスカラーとして指定します。
出力引数
zd
, pd
, kd
— デジタル領域のゼロ、極およびゲイン
列ベクトル、スカラー
z 領域伝達関数のゼロ、極およびゲイン。列ベクトルおよびスカラーとして返されます。
numd
, dend
— デジタル領域の分子と分母の係数
行ベクトル
デジタル伝達関数の分子と分母の係数。行ベクトルとして返されます。
Ad
, Bd
, Cd
, Dd
— デジタル領域の状態空間行列
行列
z 領域の状態空間表現。行列として返されます。システムが n 個の状態変数により記述され、q 個の出力をもつ場合、Ad
は n 行 n 列、Bd
は n 行 1 列、Cd
は q 行 n 列、Dd
は q 行 1 列になります。
データ型: single
| double
アルゴリズム
"双一次変換" とは変数の数学的なマッピングで、デジタル フィルター処理において s (アナログ) 平面を z (デジタル) 平面にマッピングする標準的な方法です。この変換では、従来のフィルター設計法を使用して設計されたアナログ フィルターが離散の等価なフィルターに変換されます。
双一次変換では、以下の式によって s 平面が z 平面にマッピングされます。
この変換では、以下の式を使用して、jΩ 軸 (Ω = -∞ から +∞) が単位円周上 (ejω、範囲は ω = –π から π) に繰り返しマッピングされます。
bilinear
では、プリワープを指定するオプションのパラメーター Fp
を指定することができます。fp
は、マッピング処理前後で周波数応答が厳密に一致する "一致する" 周波数を Hz で示します。プリワーピング モードでは、双一次変換によって以下の式を使用して s 平面が z 平面にマッピングされます。
プリワーピング オプションを選択した場合、bilinear
では以下の式を使用して、jΩ 軸 (Ω = –∞ から +∞) が単位円周上 (ejω、ω = -π から π) に繰り返しマッピングされます。
プリワーピング モードでは、bilinear
によって s 平面の周波数 2πfp (ラジアン/秒単位) が、z 平面の正規化周波数 2πfp/fs (ラジアン/秒単位) に一致されます。
関数 bilinear
では、3 つの異なる線形システム表現を扱うことができます。すなわち、零点-極-ゲイン、伝達関数、および状態空間形式です。
bilinear
では、提供した入力線形システムの形式に応じて、2 つのアルゴリズムのいずれかが使用されます。1 つのアルゴリズムは零点-極-ゲイン形式を、もう 1 つのアルゴリズムは状態空間形式を処理します。伝達関数表現に対し、関数 bilinear
は状態空間形式に転換し、変換を実行し、結果として得られた状態空間システムを伝達関数形式に逆変換します。
零点-極-ゲイン アルゴリズム
零点-極-ゲイン形式のシステムでは、関数 bilinear
によって以下の 4 つのステップが実行されます。
fp
が存在する場合、以下のようにプリワーピングが行われます。fp = 2*pi*fp; fs = fp/tan(fp/fs/2)
そうでない場合は
fs = 2*fs
となります。次のステートメントを使用して、±∞ で零点が削除されます。
z = z(finite(z));
次のステートメントを使用して、零点、極、およびゲインの変換が行われます。
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));
-1 に零点が追加され、結果として得られるシステムの分子と分母の次数が等しくなるようにします。
状態空間アルゴリズム
状態空間形式のアナログ システムは
で表現されます。このシステムは、次のように状態空間方程式を使用して離散形式に変換されます。
状態空間形式でアナログ システムを変換するには、bilinear
が次の 2 つのステップを実行します。
fp
が存在する場合はに、
fp
が存在しない場合は λ=fs にします。以下を使用して、
A
、B
、C
、およびD
に対して、Ad
、Bd
、Cd
、およびDd
を計算します。
伝達関数
伝達関数形式のシステムの場合、bilinear
では、num
および den
で指定される s 領域の伝達関数が離散の等価な関数に変換されます。行ベクトル num
および den
では、分子および分母の係数がs の降べきの順でそれぞれ指定されます。Bs を分子の多項式に、As を分母の多項式にします。伝達関数は、次のように表されます。
fs
は Hz のサンプル レートです。関数 bilinear
では、離散相当が、行ベクトル numd
と dend
に z の降べきの順 (z–1 の昇べきの順) で返されます。fp
は、プリワーピング用のオプションの一致する周波数を Hz で表したものです。
参照
[1] Oppenheim, Alan V., and Ronald W. Schafer, with John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.
[2] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)