| Signal Processing Toolbox |
impz
表示
[h,t]=impz(b,a) [h,t]=impz(b,a,n) [h,t]=impz(b,a,n,fs) impz(b,a) impz(...)
詳細
[h,t]は、分子係数 = impz(b,a) bと分母係数aをもつフィルタのインパルス応答を計算します。impzは、係数b,aをもとに自動的にサンプル数を選択し、応答を列ベクトルhに、時間(または、サンプリング間隔)を列ベクトルt(ここで、t = [0:n-1]'であり、nは計算されるインパルス応答の長さ)に出力します。
[h,t]は、 = impz(b,a,n) nが整数(t = [0:n-1]')のとき、nサンプルのインパルス応答を計算します。nが整数ベクトルの場合、impzは、0の位置から応答計算をスタートさせて、各整数位置で、インパルス応答を計算します(
t = n または、t = [0 n])。nの代わりに、2番目の引数に空ベクトル[]を使う場合、サンプル数は、自動的に計算されます。これがデフォルトです。
[h,t]は、サンプル間隔が、 = impz(b,a,n,fs) 1/fsになる長さ n
のベクトルt を作成し、それに対する計算を行います。
出力引数を設定せずにimpzを使用すると、stem(t,h)を使ってカレントのFigureウィンドウ内にインパルス応答をプロットします。
impzは、実数入力システムと複素数入力システムのいずれに対しても機能します。
例題
Nyquist周波数の0.4倍のカットオフ周波数をもつ、4次のローパス楕円フィルタのインパルス応答の最初の50個のサンプルをプロットします。
[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)
アルゴリズム
impzは、つぎのステートメントを使って、長さnのインパルス列をフィルタ処理します。
filter(b,a,[1 zeros(1,n-1)])
そして、stemを使って、結果をプロットします。nの長さを自動的に設定するため、impzは、FIRの場合は、
n = length(b)を使用し、length(a)が1を超える場合は、p = roots(a),を使用して極を先に求めます。
フィルタが不安定の場合、極の中の絶対値の最も大きなものの10^6倍したものをnとします。
フィルタが安定の場合、極の中の絶対値の最も大きいものによる振幅が5*10^-5に達する点をnとします。
フィルタが振動する(単位円上の極のみ)の場合、impzは、最も遅い振動の周期の5倍をnとします。
フィルタが、振動項と減衰項をもっている場合、最大振幅を表す極が、オリジナル振幅の5*10^-5
になる点、または、最もゆっくりした振動を示すものの5周期分をnとして選択します。
impzは、分子多項式の中に遅れの項を含んでいます。遅れの数は、サンプル数の計算に関連しています。
参考
|
単位インパルス応答(Control System Toolbox User's
Guideを参照) |
|
離散データのプロット (オンラインMATLAB
Function Referenceを参照) |
| impinvar | interp |