メインコンテンツ

impzlength

インパルス応答の長さ

説明

len = impzlength(b,a) は、指定されたフィルターのインパルス応答長を返します。分子 b と分母 az–1 の多項式で指定される有理システム関数をもつ、因果性がある離散時間フィルターを指定します。安定 IIR フィルターの場合、len は有効なインパルス応答シーケンスの長さです。len 番目の項より後の IIR フィルターのインパルス応答の項は本質的にゼロです。

len = impzlength(B,A,"ctf") は、分子係数 B と分母係数 A をもつCascaded Transfer Functions (CTF) として表されるデジタル フィルターの有効なインパルス応答長を返します。 (R2024b 以降)

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

len = impzlength(d) では、デジタル フィルター d のインパルス応答の長さが返されます。d を周波数応答仕様に基づいて生成するには、designfilt を使用します。

len = impzlength(sos) では、2 次セクションの行列 sos により指定される IIR フィルターの実効値インパルス応答の長さが返されます。sosK 行 6 列の行列で、セクション数 K は 2 以上でなければなりません。セクション数が 2 未満の場合は、impzlength は入力を分子ベクトル b と見なします。sos の各行は 2 次 (双二次) フィルターの係数に対応しています。sos 行列の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

len = impzlength(___,tol) では、IIR フィルターのインパルス応答の有効な長さの推定に対する許容誤差が指定されます。既定の設定では tol5e-5 です。tol の値を大きくすると、IIR フィルターのインパルス応答の有効な長さの推定は短くなります。tol の値を小さくすると、IIR フィルターのインパルス応答の有効な長さは長くなります。

すべて折りたたむ

0.9 に極をもつローパス全極 IIR フィルターを作成します。有効なインパルス応答の長さを計算します。インパルス応答を取得します。結果をプロットします。

b = 1;
a = [1 -0.9];
len = impzlength(b,a)
len = 
93
[h,t] = impz(b,a);
stem(t,h)

Figure contains an axes object. The axes object contains an object of type stem.

h(len)
ans = 
6.1704e-05

0.4π ラジアン/サンプルのカットオフ周波数をもつ 4 次ローパス楕円フィルターを設計します。通過帯域リップルを 1 dB、阻止帯域の減衰量を 60 dB に指定します。極-零点-ゲイン形式フィルターを設計し、zp2sos を使用して 2 次セクション行列を求めます。2 次セクション行列から有効なインパルス応答シーケンスの長さを判別します。

[z,p,k] = ellip(4,1,60,.4);
[sos,g] = zp2sos(z,p,k);
len = impzlength(sos)
len = 
80

designfilt を使用して、正規化された通過帯域周波数 0.4π ラジアン/サンプルをもつ 4 次のローパス楕円フィルターを設計します。通過帯域リップルを 1 dB、阻止帯域の減衰量を 60 dB に指定します。有効なインパルス応答シーケンスの長さを判別します。

d = designfilt("lowpassiir",FilterOrder=4,PassbandFrequency=0.4, ...
               PassbandRipple=1,StopbandAttenuation=60, ...
               DesignMethod="ellip");
len = impzlength(d)
len = 
80

R2024b 以降

阻止帯域エッジ周波数が 0.4、阻止帯域の減衰量が 50 dB の 40 次ローパス チェビシェフ II 型デジタル フィルターを設計します。CTF 形式の係数を使用してフィルターのインパルス応答長を計算します。許容誤差 1e-4 を指定します。

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

L = impzlength(B,A,"ctf",1e-4)
L = 
1547

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

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
L = impzlength({B,A,g},"ctf",1e-4)
L = 
403641

入力引数

すべて折りたたむ

スカラー (全極フィルター) またはベクトルとして指定する分子係数。

例: b = fir1(20,0.25)

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

スカラー (FIR フィルター) またはベクトルとして指定する分母係数。

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

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

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

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

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

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

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

メモ

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

例: B = [2 4 2;3 3 0]A = [6 0 2;6 0 0] は、正規化された 3 dB の周波数 0.5π ラジアン/サンプルをもつ 3 次のバタワース フィルターを指定します。

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

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

impzlength 関数は、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.

IIR フィルターの有効なインパルス応答の長さに対する許容誤差。正の数値として指定します。許容誤差により、絶対加算可能なシーケンスにおいてそれ以降の項が 0 とみなされる項が決定されます。既定の許容誤差は 5e-5 です。許容誤差を大きくすると有効なインパルス応答シーケンスの長さは短くなります。許容誤差を小さくすると有効なインパルス応答シーケンスの長さは長くなります。

出力引数

すべて折りたたむ

正の整数で指定するインパルス応答の長さ。絶対加算可能なインパルス応答をもつ安定 IIR フィルターの場合、impzlength は、それを超えると係数が本質的にゼロとなる有効なインパルス応答の長さを返します。オプションの tol 入力引数を指定すると、このカットオフ点をコントロールできます。

詳細

すべて折りたたむ

ヒント

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

アルゴリズム

FIR フィルターのインパルス応答を計算するには、impzlengthb の長さを使用します。IIR フィルターの場合、関数は最初に roots を使用して伝達関数の極を求めます。

フィルターが不安定な場合、最大の極をもつ項が元の値の 106 倍に達する位置にまで長さが拡張します。

フィルターが安定している場合、最大振幅の極をもつ項が元の振幅の tol 倍に達するまで長さが拡張します。

フィルターが振動する (単位円上の極のみ) 場合、impzlength では、振動が最も遅くなる 5 周期が計算されます。

フィルターに振動項と減衰項の両方が含まれている場合は、長さは次の値よりも大きくなります。

  • 振動が最も遅くなる 5 周期。

  • 最大の極をもつ項が元の振幅の tol 倍に達する点。

参照

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

拡張機能

すべて展開する

バージョン履歴

R2013a で導入

すべて展開する