Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

stepz

デジタル フィルターのステップ応答

説明

[h,t] = stepz(b,a) では、b および a に格納されている伝達関数の係数をもつデジタル フィルターに対し、ステップ応答ベクトル h および対応するサンプル時間 t が返されます。

[h,t] = stepz(sos) では、2 次セクション行列 sos に対応するステップ応答が返されます。

[h,t] = stepz(d) では、デジタル フィルター d のステップ応答が返されます。

[h,t] = stepz(___,n) では、ステップ応答の最初の n 個のサンプルが計算されます。この構文には、前の構文の入力引数を任意に組み合わせて含めることができます。

[h,t] = stepz(___,n,fs) では、n 個のサンプルが計算され、サンプル間隔が 1/fs 単位の間隔になるようなベクトル t が生成されます。

出力引数なしで stepz(___) を使用すると、フィルターのステップ応答がプロットされます。digitalFilter を入力している場合、ステップ応答は FVTool で表示できます。

すべて折りたたむ

正規化された電力半値周波数 0.4π ラジアン/サンプルをもつ 3 次のバタワース フィルターを作成します。そのステップ応答を表示します。

[b,a] = butter(3,0.4);
stepz(b,a)
grid

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

designfilt を使って同じフィルターを作成し、fvtool を使用してそのステップ応答を表示します。

d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.4);
stepz(d)

Figure Figure 1: Step Response contains an axes object. The axes object with title Step Response, xlabel Samples, ylabel Amplitude contains an object of type stem.

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

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

Figure contains an axes object. The axes object with title Step Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

designfilt を使って同じフィルターを作成し、fvtool を使用してそのステップ応答を表示します。

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

Figure Figure 1: Step Response contains an axes object. The axes object with title Step Response, xlabel Samples, ylabel Amplitude contains an object of type stem.

入力引数

すべて折りたたむ

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

H(z)=B(z)A(z)=b1+b2z1+bnz(n1)+bn+1zna1+a2z1+amz(m1)+am+1zm

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

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

評価点の数。正の整数スカラーまたは正の整数ベクトルとして指定します。n が正の整数スカラー (t = [0:n-1]') である場合、関数は、ステップ応答の最初の n 個のサンプルを計算します。n が整数のベクトルである場合、ステップ応答は、その整数値の時点 (0 を時間軸の原点として) のみで計算されます。

データ型: double

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 次のバタワース フィルターを指定します。

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

データ型: double

出力引数

すべて折りたたむ

ステップ応答。列ベクトルとして返されます。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 では、分子多項式に遅延を含むことができます。遅延の数は、サンプル数の計算に組み込まれています。

拡張機能

バージョン履歴

R2006a より前に導入