最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
デジタル フィルターのステップ応答
[h,t] = stepz(b,a)
[h,t] = stepz(sos)
[h,t] = stepz(d)
[h,t] = stepz(...,n)
[h,t] = stepz(...,n,fs)
stepz(...)
[h,t] = stepz(b,a)
では、分子係数 b
と分母係数 a
をもつフィルターのステップ応答が返されます。stepz
では、サンプル数が選択され、応答が列ベクトル h
で、サンプル時間が列ベクトル t
で返されます (ここで、t = [0:n-1]'
と n
= length(t)
は自動的に計算されます)。
[h,t] = stepz(sos)
では、2 次セクション型行列 sos
のステップ応答が返されます。sos
は K 行 6 列の行列で、セクション数 K は 2 以上でなければなりません。セクション数が 2 未満の場合、stepz
は入力を分子ベクトル b
とみなします。sos
の各行は 2 次 (双二次) フィルターの係数に対応しています。sos
行列の i 行目は [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]
に対応しています。
[h,t] = stepz(d)
では、デジタル フィルター d
のステップ応答が返されます。d
を周波数応答仕様に基づいて生成するには、関数 designfilt
を使用します。
[h,t] = stepz(...,n)
では、n が整数 (t
= [0:n-1]'
) のとき、ステップ応答の最初の n サンプルが計算されます。n
が整数のベクトルである場合、ステップ応答は、その整数値の時点 (0 を時間軸の原点として) のみで計算されます。
[h,t] = stepz(...,n,fs)
では、n 個のサンプルが計算され、サンプル間隔が 1/fs
単位の間隔になるような長さ n
のベクトル t
が生成されます。fs
の単位は Hz です。
出力引数なしで stepz(...)
を使用すると、フィルターのステップ応答がプロットされます。フィルター係数または2 次セクション型行列を入力した場合、現在の Figure ウィンドウが使用されます。digitalFilter
を入力している場合、ステップ応答は fvtool
で表示できます。
stepz
への入力が単精度の場合、ステップ応答は単精度演算で計算されます。出力 h
は単精度です。
stepz
では、以下のコマンドを使用して長さ n
のステップ シーケンスがフィルター処理され、
filter(b,a,ones(1,n))
stem
を使用して、結果をプロットします。
長さを自動設定する場合に n
を計算するために、stepz
では、FIR の場合は n = length(b)
を使用し、length(a)
が 1 より大きい場合は p = roots(a)
を使用して極をまず検出します。
フィルターが不安定な場合、n
は最大の極をもつ項が元の値の 106 倍に達する位置に存在するものとして選択されます。
フィルターが安定している場合、n
は、振幅が最大の極をもつ項が元の振幅の 5 × 10–5 倍になる位置に存在するものとして選択されます。
フィルターが振動する (単位円上の極のみ) 場合、stepz
では、最も遅い振動の周期の 5 倍が n とされます。
フィルターに振動項と減衰項の両方が含まれている場合は、発振が最も遅くなる 5 周期、または、(単位でない) 最大の振幅の極をもつ項が元の振幅の 5 × 10–5 倍になる値の、いずれか大きい方に n
が選択されます。
stepz
では、分子多項式に遅延を含むことができます。遅延の数は、サンプル数の計算に組み込まれています。
designfilt
| digitalFilter
| freqz
| grpdelay
| impz
| phasez
| zplane