Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

cheby2

チェビシェフ II 型フィルターの設計

説明

[b,a] = cheby2(n,Rs,Ws) は、正規化された阻止帯域エッジ周波数 Ws および Rs デシベルの通過帯域ピーク値からの阻止帯域の減衰量をもつ n 次のローパス デジタル チェビシェフ II 型フィルターの伝達関数係数を返します。

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

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

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

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

[___] = cheby2(___,'s') は阻止帯域エッジ角周波数 Ws と阻止帯域の減衰量 Rs デシベルをもつローパス、ハイパス、バンドパスまたはバンドストップのアナログ チェビシェフ II 型フィルターを設計します。

すべて折りたたむ

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

fc = 300;
fs = 1000;

[b,a] = cheby2(6,50,fc/(fs/2));

freqz(b,a,[],fs)

subplot(2,1,1)
ylim([-100 20])

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

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

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

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

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

[z,p,k] = cheby2(9,20,300/500,"high");
sos = zp2sos(z,p,k);

freqz(sos)
subplot(2,1,1)
ylim([-60 10])

500 Hz の低域阻止帯域周波数および 560 Hz の高域阻止帯域周波数をもつ 20 次のチェビシェフ II 型バンドパス フィルターを設計します。40 dB の阻止帯域の減衰量および 1500 Hz のサンプル レートを指定します。状態空間表現を使用します。

fs = 1500;
[A,B,C,D] = cheby2(10,40,[500 560]/(fs/2));

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

sos = ss2sos(A,B,C,D);
freqz(sos,[],fs)

designfilt を使用して同じフィルターを設計します。周波数応答を可視化します。

d = designfilt("bandpassiir",FilterOrder=20, ...
    StopbandFrequency1=500,StopbandFrequency2=560, ...
    StopbandAttenuation=40,SampleRate=fs);
freqz(d,[],fs)

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

n = 5;
fc = 2e9;

[zb,pb,kb] = butter(n,2*pi*fc,"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*fc,"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*fc,"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*fc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

同じエッジ周波数をもつ 5 次のベッセル フィルターを設計します。その周波数応答を計算します。

[zf,pf,kf] = besself(n,2*pi*fc);
[bf,af] = zp2tf(zf,pf,kf);
[hf,wf] = freqs(bf,af,4096);

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

plot([wb w1 w2 we wf]/(2e9*pi), ...
    mag2db(abs([hb h1 h2 he hf])))
axis([0 5 -45 5])
grid
xlabel("Frequency (GHz)")
ylabel("Attenuation (dB)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

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

入力引数

すべて折りたたむ

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

データ型: double

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

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

データ型: double

阻止帯域エッジ周波数。スカラーまたは 2 要素ベクトルとして指定します。阻止帯域エッジ周波数とは、フィルターの振幅応答が Rs dB となる場合の周波数です。阻止帯域の減衰量 Rs を大きくすると、遷移幅が広くなります。

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

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

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

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

データ型: double

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

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

  • 'high' は阻止帯域エッジ周波数 Ws のハイパス フィルターを指定します。

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

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

出力引数

すべて折りたたむ

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

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

    H(z)=b1+b2z1++brz(r1)a1+a2z1++arz(r1)

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

    H(s)=b1sr1+b2sr2++bra1sr1+a2sr2++ar

データ型: double

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

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

    H(z)=k(1z1z1)(1z2z1)(1zrz1)(1p1z1)(1p2z1)(1prz1)

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

    H(s)=k(sz1)(sz2)(szr)(sp1)(sp2)(spr)

データ型: double

フィルターの状態空間表現。行列として返されます。ローパス設計とハイパス設計の場合、m = n で、バンドパス フィルターとバンドストップ フィルターの場合に m = 2n ならば、Am × m で、Bm × 1、C は 1 × mD は 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; 
Rs = 80; 
Wn = [2.5e6 29e6]/500e6;
ftype = 'bandpass';

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

% Zero-pole-gain design
[z,p,k] = cheby2(n,Rs,Wn,ftype);
sos = zp2sos(z,p,k);

% Plot and compare the results
[h,f] = freqz(b,a,8192);
hsos = freqz(sos,8192);

semilogx(f/pi,mag2db(abs([h hsos])))
grid
legend('TF Design','ZPK Design')
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')

アルゴリズム

チェビシェフ II 型フィルターは、通過帯域では単調で、阻止帯域では等リップルになります。II 型フィルターは、I 型フィルターほど速くロールオフしませんが、通過帯域にリップルをもちません。

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

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

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

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

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

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

拡張機能

バージョン履歴

R2006a より前に導入