Main Content

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

cheby1

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

説明

[b,a] = cheby1(n,Rp,Wp) は正規化された通過帯域エッジ周波数 Wp および通過帯域のピーク間リップルの Rp デシベルをもつ n 次のローパス デジタル チェビシェフ I 型フィルターの伝達関数係数を返します。

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

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

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

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

[___] = cheby1(___,'s') は通過帯域エッジ角周波数 Wp および通過帯域リップル Rp デシベルをもつローパス、ハイパス、バンドパス、または、バンドストップのアナログ チェビシェフ I 型フィルターを設計します。

すべて折りたたむ

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

fc = 300;
fs = 1000;

[b,a] = cheby1(6,10,fc/(fs/2));

freqz(b,a,[],fs)

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

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

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

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

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

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

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

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

[z,p,k] = cheby1(9,0.5,300/500,'high');
sos = zp2sos(z,p,k);
freqz(sos)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

低域通過帯域周波数が 500 Hz、高域通過帯域周波数が 560 Hz の 20 次チェビシェフ I 型バンドパス フィルターを設計します。通過帯域リップル 3 dB、サンプル レート 1500 Hz を指定します。状態空間表現を使用します。designfilt を使用して同じフィルターを設計します。

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

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

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

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent cheby1, designfilt.

カットオフ周波数 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"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Attenuation (dB) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

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

入力引数

すべて折りたたむ

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

データ型: double

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

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

データ型: double

通過帯域エッジ周波数。スカラーまたは 2 要素ベクトルとして指定します。通過帯域エッジ周波数は、フィルターの振幅応答が –Rp デシベルとなる場合の周波数です。通過帯域リップルの値 Rp を小さくすると、遷移幅が広くなります。

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

    Wp が 2 要素ベクトル [w1 w2] (ここで、w1 < w2) の場合、cheby1 は低域エッジ周波数 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;
Wn = [2.5e6 29e6]/500e6;
ftype = 'bandpass';

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

% Zero-pole-gain design
[z,p,k] = cheby1(n,Rp,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 Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent TF Design, ZPK Design.

アルゴリズム

チェビシェフ I 型フィルターは、通過帯域では等リップルで、阻止帯域では単調です。I 型フィルターは、II 型フィルターより速くロールオフしますが、通過帯域において、1 からの逸脱が大きくなるという欠点があります。

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

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

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

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

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

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

拡張機能

バージョン履歴

R2006a より前に導入