Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ellip

楕円フィルターの設計

説明

[b,a] = ellip(n,Rp,Rs,Wp) は正規化された通過帯域エッジ周波数 Wp をもつ n 次のローパス デジタル楕円フィルターの伝達関数係数を返します。結果として得られるフィルターは、通過帯域のピーク間リップルの Rp デシベルおよび通過帯域のピーク値から下がった阻止帯域の減衰量 Rs デシベルをもちます。

[b,a] = ellip(n,Rp,Rs,Wp,ftype)ftype の値および Wp の要素数に応じてローパス、ハイパス、バンドパスまたはバンドストップの楕円フィルターを設計します。得られるバンドパスおよびバンドストップの設計は次数が 2n です。

メモ: 伝達関数型の作成に影響する数値的問題の詳細については、制限を参照してください。

[z,p,k] = ellip(___) はローパス、ハイパス、バンドパス、または、バンドストップのデジタル楕円フィルターを設計し、その零点、極およびゲインを返します。この構文には、前の構文の任意の入力引数を含めることができます。

[A,B,C,D] = ellip(___) はローパス、ハイパス、バンドパスまたはバンドストップのデジタル楕円フィルターを設計し、その状態空間表現を指定する行列を返します。

[___] = ellip(___,'s') は通過帯域エッジ角周波数 WpRp デシベルの通過帯域リップルおよび Rs デシベルの阻止帯域の減衰量をもつローパス、ハイパス、バンドパス、または、バンドストップのアナログ楕円フィルターを設計します。

すべて折りたたむ

1000 Hz でサンプリングされたデータに対し、5 dB の通過帯域リップル、40 dB の阻止帯域の減衰量、300 Hz の通過帯域エッジ周波数 (0.6π ラジアン/サンプルに相当) をもつ 6 次のローパス楕円フィルターを設計します。その振幅応答と位相応答をプロットします。これを使用して、1,000 サンプルのランダム信号をフィルター処理します。

[b,a] = ellip(6,5,40,0.6);
freqz(b,a)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

0.2π および 0.6π ラジアン/サンプルの正規化されたエッジ周波数、5 dB の通過帯域リップルおよび 50 dB の阻止帯域の減衰量をもつ 6 次の楕円バンドストップ フィルターを設計します。その振幅応答と位相応答をプロットします。これを使用してランダム データをフィルター処理します。

[b,a] = ellip(3,5,50,[0.2 0.6],'stop');
freqz(b,a)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

1000 Hz でサンプリングされたデータに対し、300 Hz の通過帯域エッジ周波数 (0.6π ラジアン/サンプルに相当) をもつ 6 次のハイパス楕円フィルターを設計します。通過帯域リップルを 3 dB、阻止帯域の減衰量を 50 dB に指定します。その振幅応答と位相応答を表示します。fvtool で使用するために零点、極およびゲインを 2 次セクション型に変換します。

[z,p,k] = ellip(6,3,50,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

500 Hz の低域通過帯域周波数および 560 Hz の高域通過帯域周波数をもつ 20 次の楕円バンドパス フィルターを設計します。3 dB の通過帯域リップル、40 dB の阻止帯域の減衰量、1500 Hz のサンプルレートを指定します。状態空間表現を使用します。designfilt を使用して同じフィルターを設計します。

[A,B,C,D] = ellip(10,3,40,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
    'PassbandFrequency1',500,'PassbandFrequency2',560, ...
    'PassbandRipple',3, ...
    'StopbandAttenuation1',40,'StopbandAttenuation2',40, ...
    'SampleRate',1500);

状態空間表現を 2 次セクション型に変換します。fvtool を使用して周波数応答を可視化します。

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'ellip','designfilt')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent ellip, designfilt.

カットオフ周波数 2 GHz をもつ 5 次のアナログ バタワース ローパス フィルターを設計します。2π 倍にして周波数を秒あたりのラジアン単位に変換します。4096 点でのフィルターの周波数応答を計算します。

n = 5;
f = 2e9;

[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

同じエッジ周波数と通過帯域リップル 3 dB をもつ 5 次のチェビシェフ I 型フィルターを設計します。その周波数応答を計算します。

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

同じエッジ周波数と阻止帯域の減衰量 30 dB をもつ 5 次のチェビシェフ II 型フィルターを設計します。その周波数応答を計算します。

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

同じエッジ周波数、通過帯域リップル 3 dB および阻止帯域の減衰量 30 dB をもつ 5 次の楕円フィルターを設計します。その周波数応答を計算します。

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

減衰をデシベルでプロットします。周波数をギガヘルツで表します。フィルターを比較します。

plot(wb/(2e9*pi),mag2db(abs(hb)))
hold on
plot(w1/(2e9*pi),mag2db(abs(h1)))
plot(w2/(2e9*pi),mag2db(abs(h2)))
plot(we/(2e9*pi),mag2db(abs(he)))
axis([0 4 -40 5])
grid
xlabel('Frequency (GHz)')
ylabel('Attenuation (dB)')
legend('butter','cheby1','cheby2','ellip')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent butter, cheby1, cheby2, ellip.

バタワース フィルターおよびチェビシェフ II 型フィルターには平坦な通過帯域と広い遷移帯域幅があります。チェビシェフ I 型フィルターおよび楕円フィルターは速くロールオフしますが、通過帯域リップルがあります。チェビシェフ II 型設計関数に対する周波数入力は、通過帯域の末尾ではなく阻止帯域の始点を設定します。

入力引数

すべて折りたたむ

フィルター次数。整数スカラーで指定します。バンドパスおよびバンドストップの設計では、n がフィルター次数の 1/2 を表します。

データ型: double

通過帯域のピーク間リップル。正のスカラーをデシベル単位で指定します。

仕様の中で、ℓ が線形単位で指定されている場合、Rp = 40 log10((1+ℓ)/(1–ℓ)) を使用するとデシベルに変換できます。

データ型: double

通過帯域のピーク値から低下する阻止帯域減衰量。デシベル単位の正のスカラーとして指定します。

仕様の中で、ℓ が線形単位で指定されている場合、Rs = –20 log10ℓ を使用するとデシベルに変換できます。

データ型: double

通過帯域エッジ周波数。スカラーまたは 2 要素ベクトルとして指定します。通過帯域エッジ周波数は、フィルターの振幅応答が Rp dB となる場合の周波数です。通過帯域リップルの値 Rp が減少したり阻止帯域の減衰量 Rs が増加したりすると、遷移幅が拡大します。

  • Wp がスカラーの場合、ellip はエッジ周波数 Wp をもつローパス フィルターまたはハイパス フィルターを設計します。

    Wp が 2 要素ベクトル [w1 w2] (ここで、w1 < w2) の場合、ellip は低域エッジ周波数 w1 および高域エッジ周波数 w2 をもつバンドパスまたはバンドストップ フィルターを設計します。

  • デジタル フィルターの場合、通過帯域のエッジ周波数は 0 ~ 1 の間でなければなりません。ここで 1 はナイキスト レート — サンプル レートの 1/2 つまり π ラジアン/サンプルに相当します。

    アナログ フィルターの場合、通過帯域のエッジ周波数は必ずラジアン/秒で表示され、任意の正の値をとることができます。

データ型: double

フィルターの種類。次のいずれかとして指定します。

  • 'low' は通過帯域エッジ周波数 Wp をもつローパス フィルターを指定します。'low' はスカラーの Wp の既定値です。

  • 'high' は通過帯域エッジ周波数 Wp をもつハイパス フィルターを指定します。

  • Wp が 2 要素ベクトルの場合、'bandpass' は次数 2n のバンドパス フィルターを指定します。'bandpass' は、Wp が 2 要素をもつときの既定値です。

  • Wp が 2 要素ベクトルの場合、'stop' は次数 2n のバンドストップ フィルターを指定します。

出力引数

すべて折りたたむ

フィルターの伝達関数の係数。ローパス フィルターおよびハイパス フィルターの場合は長さ n + 1 の行ベクトルとして、バンドパス フィルターおよびバンドストップ フィルターの場合は長さ 2n + 1 の行ベクトルとして返されます。

  • デジタル フィルターの場合、伝達関数は b および a で以下のように表されます。

    H(z)=B(z)A(z)=b(1)+b(2)z1++b(n+1)zna(1)+a(2)z1++a(n+1)zn.

  • アナログ フィルターの場合、伝達関数は b および a で以下のように表されます。

    H(s)=B(s)A(s)=b(1)sn+b(2)sn1++b(n+1)a(1)sn+a(2)sn1++a(n+1).

データ型: double

フィルターのゼロ、極、ゲイン。長さ n (バンドパス設計とバンドストップ設計の場合は 2n) およびスカラーの 2 つの列ベクトルとして返されます。

  • デジタル フィルターの場合、伝達関数は zp および k で以下のように表されます。

    H(z)=k(1z(1)z1)(1z(2)z1)(1z(n)z1)(1p(1)z1)(1p(2)z1)(1p(n)z1).

  • アナログ フィルターの場合、伝達関数は zp および k で以下のように表されます。

    H(s)=k(sz(1))(sz(2))(sz(n))(sp(1))(sp(2))(sp(n)).

データ型: double

フィルターの状態空間表現。行列として返されます。ローパス設計とハイパス設計の場合、m = n で、バンドパス フィルターとバンドストップ フィルターの場合に m = 2n ならば、A は m × m で、B は m × 1、C は 1 × m、D は 1 × 1 となります。

  • デジタル フィルターの場合、状態空間の行列は状態ベクトル x、入力 u および出力 y を以下の式により表します。

    x(k+1)=Ax(k)+Bu(k)y(k)=Cx(k)+Du(k).

  • アナログ フィルターの場合、状態空間の行列は状態ベクトル x、入力 u および出力 y を以下の式により表します。

    x˙=Ax+Buy=Cx+Du.

データ型: double

詳細

すべて折りたたむ

制限

伝達関数構文の数値的不安定性

一般に、IIR フィルターを設計する場合は、[z,p,k] 構文を使用します。フィルターを解析または実装する場合は、[z,p,k] の出力を zp2sos で使用します。[b,a] 構文を使用するフィルターを設計する場合、数値の問題が発生することがあります。これらの問題は、丸め誤差によるものであり、n が 4 の低さの場合に発生することがあります。以下の例はこの制限を示しています。

n = 6; 
Rp = 0.1;
Rs = 80;
Wn = [2.5e6 29e6]/500e6; 
ftype = 'bandpass'; 

% Transfer Function design 
[b,a] = ellip(n,Rp,Rs,Wn,ftype);            % This filter is unstable 

% Zero-Pole-Gain design 
[z,p,k] = ellip(n,Rp,Rs,Wn,ftype);
sos = zp2sos(z,p,k);

% Plot and compare the results
hfvt = fvtool(b,a,sos,'FrequencyScale','log'); 
legend(hfvt,'TF Design','ZPK Design')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent TF Design, ZPK Design.

アルゴリズム

楕円フィルターは、バタワースやチェビシェフのフィルターより鋭いロールオフ特性を示しますが、通過帯域と阻止帯域の両方で等リップルとなります。一般に楕円フィルターでは、ほかのどのフィルター タイプよりも最小の次数で与えられた性能仕様を満たすことができます。

ellip は、以下の 5 つのステップのアルゴリズムを使用します。

  1. 関数 ellipap を使用して、ローパス アナログ プロトタイプの極、零点およびゲインを求めます。

  2. 極、零点、およびゲインを状態空間型に変換します。

  3. 必要に応じて、状態空間変換を使ってローパス フィルターを、望ましい周波数制約をもつバンドパス、ハイパス、または、バンドストップのフィルターに変換します。

  4. デジタル フィルター設計の場合、bilinear を使用して、プリワーピング周波数をもつ双一次変換によりアナログ フィルターをデジタル フィルターに変換します。周波数を慎重に調整することで、アナログ フィルターとデジタル フィルターが Wp、あるいは w1w2 で同じ周波数応答の振幅をもつことができるようになります。

  5. 必要に応じて、状態空間フィルターを伝達関数、または、零点-極-ゲイン型に逆変換します。

拡張機能

R2006a より前に導入