ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

impz

デジタル フィルターのインパルス応答

説明

[h,t] = impz(b,a) では、分子係数が b、分母係数が a のデジタル フィルターのインパルス応答が返されます。関数は、サンプル数を選択し、h の応答係数と t のサンプル時間を返します。

[h,t] = impz(sos) では、2 次セクション型行列 sos によって指定されたフィルターのインパルス応答が返されます。

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

[h,t] = impz(___,n) は、計算するインパルス応答のサンプルを指定します。これまでに説明したどの構文を使用してもフィルターを指定できます。

[h,t] = impz(___,n,fs) では、1/fs 単位離れた連続するサンプル間隔のベクトル t が返されます。

出力引数なしで impz(___) を使用すると、フィルターのインパルス応答がプロットされます。

すべて折りたたむ

正規化された通過帯域周波数 0.4 ラジアン/サンプルをもつ 4 次のローパス楕円フィルターを設計します。0.5 dB の通過帯域リップルと 20 dB の阻止帯域の減衰量を指定します。インパルス応答の最初の 50 個のサンプルをプロットします。

[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

designfilt を使用して同じフィルターを設計します。インパルス応答の最初の 50 個のサンプルをプロットします。

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',4, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
impz(d,50)

β=4 のカイザー ウィンドウを使用して次数 18 の FIR ハイパス フィルターを設計します。100 Hz のサンプルレートおよび 30 Hz のカットオフ周波数を指定します。フィルターのインパルス応答を表示します。

b = fir1(18,30/(100/2),'high',kaiser(19,4));
impz(b,1,[],100)

designfilt を使用して同じフィルターを設計し、そのインパルス応答をプロットします。

d = designfilt('highpassfir','FilterOrder',18,'SampleRate',100, ...
               'CutoffFrequency',30,'Window',{'kaiser',4});
impz(d,[],100)

入力引数

すべて折りたたむ

伝達関数の係数。ベクトルで指定します。ba によるこの伝達関数式は次になります。

H(ejω)=B(ejω)A(ejω)=b(1)+b(2)ejω+b(3)ej2ω++b(M)ej(M1)ωa(1)+a(2)ejω+a(3)ej2ω++a(N)ej(N1)ω.

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

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

2 次セクション型の係数。行列で指定します。sos は K 行 6 列の行列で、セクション数 K が 2 以上でなければなりません。セクション数が 2 未満の場合、関数は入力を分子ベクトルとして扱います。sos の各行は 2 次 (双二次) フィルターの係数に対応しています。sos の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)] に対応しています。

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

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

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

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

サンプル数。正の整数、非負の整数のベクトル、または空のベクトルとして指定します。

  • n が正の整数の場合、impz はインパルス応答の最初の n サンプルを計算して、t(0:n-1)' として返します。

  • n が非負の整数のベクトルの場合、impz では、ベクトルで指定された場所でインパルス応答を計算します。

  • n が空のベクトルの場合、impz は、サンプルの数を自動的に計算します。詳細は、アルゴリズムを参照してください。

例: impz([2 4 2 6 0 2;3 3 0 6 0 0],5) は、バタワース フィルターのインパルス応答の最初の 5 つのサンプルを計算します。

例: impz([2 4 2 6 0 2;3 3 0 6 0 0],[0 3 2 1 4 5]) は、バタワース フィルターのインパルス応答の最初の 6 つのサンプルを計算します。

例: impz([2 4 2 6 0 2;3 3 0 6 0 0],[],5e3) は、5 kHz でサンプリングされた信号をフィルター処理するように設計されたバタワース フィルターのインパルス応答を計算します。

サンプルレート。正のスカラーで指定します。時間の単位が秒の場合、fs は Hz で表されます。

データ型: double

出力引数

すべて折りたたむ

インパルス応答の係数。列ベクトルとして返されます。

サンプル時間。列ベクトルとして返されます。

アルゴリズム

impz では、以下のステートメントを使用して、長さ n のインパルス シーケンスがフィルター処理されます。

filter(b,a,[1 zeros(1,n-1)])

stem を使用して、結果をプロットします。

メモ

impz への入力が単精度の場合、関数は、単精度演算を使用してインパルス応答を計算し、単精度出力を返します。

impzn を自動的に計算した場合、アルゴリズムは次のフィルターの特性によって異なります。

  • FIR フィルター — nb の長さです。

  • IIR フィルター — impz は、roots を使用して伝達関数の極を最初に求めます。

    • フィルターが不安定な場合、n は最大の極をもつ項が元の値の 106 倍に達する位置に存在するものとして選択されます。

    • フィルターが安定している場合、n は、振幅が最大の極をもつ項が元の振幅の 5 × 10–5 倍になる位置に存在するものとして選択されます。

    • フィルターが振動する (単位円上の極のみ) 場合、impz では、最も遅い振動の周期の 5 倍が n とされます。

    • フィルターに振動項と減衰項の両方が含まれている場合は、n は、発振が最も遅くなる 5 周期、または最大の極をもつ項が元の振幅の 5 × 10–5 倍になる値の大きい方になります。

impz では、分子多項式に遅延を含むことができます。遅延の数は、サンプル数の計算に組み込まれています。

R2006a より前に導入