メインコンテンツ

filtord

説明

n = filtord(b,a) は、指定されたデジタル フィルターのフィルター次数 n を返します。デジタル フィルターを、分子係数 b と分母係数 a をもつ因果性有理システム関数として指定します。

n = filtord(B,A,"ctf") は、分子係数 B と分母係数 A をもつCascaded Transfer Functions (CTF) として表されるデジタル フィルターのフィルター次数を返します。 (R2024b 以降)

n = filtord({B,A,g},"ctf") は、デジタル フィルターのフィルター次数を CTF 形式で返します。分子係数 B、分母係数 A、およびフィルター セクション全体のスケーリング値 g を使用してフィルターを指定します。 (R2024b 以降)

n = filtord(d) は、デジタル フィルター d のフィルター次数 n を返します。d は関数 designfilt を使用して生成します。

n = filtord(sos) では、2 次セクション行列 sos で指定されるフィルターに対するフィルター次数が返されます。sosK 行 6 列の行列です。セクション数 K は 2 以上でなければなりません。sos の各行は 2 次フィルターの係数に対応しています。2 次セクション行列の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

すべて折りたたむ

ウィンドウ法を使用して、正規化されたカットオフ周波数が 0.5π ラジアン/サンプルの 20 次の FIR フィルターを設計します。フィルター次数を検証します。

b = fir1(20,0.5);
n = filtord(b)
n = 
20

designfilt を使用して同一のフィルターを設計し、その次数を確認します。

di = designfilt('lowpassfir','FilterOrder',20,'CutoffFrequency',0.5);
ni = filtord(di)
ni = 
20

R2024b 以降

阻止帯域エッジ周波数が 0.4、阻止帯域の減衰量が 50 dB の 40 次ローパス チェビシェフ II 型デジタル フィルターを設計します。CTF 形式の係数を使用してフィルター次数を計算します。

[B,A] = cheby2(40,50,0.4,"ctf");

n1 = filtord(B,A,"ctf")
n1 = 
40

通過帯域エッジ周波数が 0.3 と 0.7、通過帯域リップルが 0.1 dB、阻止帯域の減衰量が 50 dB の 30 次バンドパス楕円デジタル フィルターを設計します。CTF 形式の係数とゲインを使用してフィルター次数を計算します。

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
n2 = filtord({B,A,g},"ctf")
n2 = 
60

FIR 等リップル フィルターと IIR バタワース フィルターを同じ仕様のセットから設計します。2 つの設計間のフィルター次数の差を求めます。

fir = designfilt("lowpassfir",DesignMethod="equiripple", ...
    SampleRate=1e3,PassbandFrequency=100,StopbandFrequency=120, ...
    PassbandRipple=0.5,StopbandAttenuation=60);
iir = designfilt("lowpassiir",DesignMethod="butter", ...
    SampleRate=1e3,PassbandFrequency=100,StopbandFrequency=120, ...
    PassbandRipple=0.5,StopbandAttenuation=60);
FIR = filtord(fir)
FIR = 
114
IIR = filtord(iir)
IIR = 
41

入力引数

すべて折りたたむ

分子係数。スカラーまたはベクトルで指定します。フィルターが全極フィルターの場合、b はスカラーです。それ以外の場合、b は行ベクトルまたは列ベクトルです。

例: b = fir1(20,0.25)

データ型: single | double
複素数のサポート: あり

分母係数。スカラーまたはベクトルで指定します。フィルターが FIR フィルターの場合、a はスカラーです。それ以外の場合、a は行ベクトルまたは列ベクトルです。

例: [b,a] = butter(20,0.25)

データ型: single | double
複素数のサポート: あり

R2024b 以降

カスケード伝達関数 (CTF) 係数。スカラー、ベクトル、または行列として指定します。BA は、それぞれカスケード伝達関数の分子係数と分母係数をリストします。

B のサイズは L 行 (m + 1) 列、A のサイズは L 行 (n + 1) でなければなりません。ここで、

  • L はフィルター セクションの数を表します。

  • m はフィルターの分子の次数を表します。

  • n はフィルターの分母の次数を表します。

カスケード伝達関数の形式と係数行列の詳細については、CTF 形式によるデジタル フィルターの指定を参照してください。

メモ

A(:,1) のいずれかの要素が 1 と等しくない場合、filtord はフィルター係数を A(:,1) で正規化します。この場合、A(:,1) はゼロ以外でなければなりません。

データ型: double | single
複素数のサポート: あり

R2024b 以降

スケール値。実数値のスカラー、または L + 1 個の要素をもつ実数値のベクトルとして指定します。ここで、L は CTF セクションの数です。スケール値は、カスケード フィルター表現のセクション全体にわたるフィルター ゲインの分布を表します。

filtord 関数は、g の指定方法に応じて、scaleFilterSections 関数を使用してフィルター セクションにゲインを適用します。

  • スカラー — この関数は、すべてのフィルター セクションにわたってゲインを均一に配分します。

  • ベクトル — この関数は、最初の L 個のゲイン値を対応するフィルター セクションに適用し、最後のゲイン値をすべてのフィルター セクションに均一に配分します。

データ型: double | single

デジタル フィルター。digitalFilter オブジェクトで指定します。デジタル フィルターを周波数応答仕様に基づいて生成するには、関数 designfilt を使用します。

例: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

2 次セクションの行列。K 行 6 列の行列で指定します。K 番目の双二次フィルターのシステム関数は、次の有理 Z 変換で表されます。

Hk(z)=Bk(1)+Bk(2)z1+Bk(3)z2Ak(1)+Ak(2)z1+Ak(3)z2.

行列 sosK 行目の係数は、次の順序で並びます。

[Bk(1)Bk(2)Bk(3)Ak(1)Ak(2)Ak(3)].

フィルターの周波数応答は、単位円上で次のように値が求められるシステム関数です。

z=ej2πf.

データ型: single | double
複素数のサポート: あり

出力引数

すべて折りたたむ

フィルター次数。整数で指定します。

詳細

すべて折りたたむ

ヒント

  • スケーリング ゲインを含むフィルターを CTF 形式で取得できます。buttercheby1cheby2ellip などのデジタル IIR フィルター設計関数の出力を使用します。これらの関数で、"ctf" フィルタータイプ引数を指定し、スケール値を取得するために BAg を返すように指定します。 (R2024b 以降)

参照

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

拡張機能

すべて展開する

バージョン履歴

R2013a で導入

すべて展開する