Main Content

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

impzlength

インパルス応答の長さ

説明

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

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

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

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
impz(d)

Figure Filter Visualization Tool - Impulse Response contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Impulse Response contains an object of type stem.

入力引数

すべて折りたたむ

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

例: b = fir1(20,0.25)

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

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

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

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

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

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

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

フィルターの周波数応答は、次によって単位円上で評価されるシステム関数です。

z=ej2πf.

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

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

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

出力引数

すべて折りたたむ

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

アルゴリズム

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

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

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

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

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

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

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

拡張機能

バージョン履歴

R2013a で導入