Main Content

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

step

動的システムのステップ応答プロット、ステップ応答データ

説明

ステップ応答プロット

step(sys) は、単位振幅のステップ入力に対する動的システム モデルの応答をプロットします。モデル sys は、連続時間または離散時間、および SISO または MIMO のいずれかにすることができます。MIMO システムでは、プロットに各 I/O チャネルのステップ応答が表示されます。step では、システム ダイナミクスに基づいてシミュレーションのタイム ステップと期間が自動的に決まります。

step(sys,tFinal) は、t = 0 から最終時間 t = tFinal までのステップ応答をシミュレーションします。この関数はシステム ダイナミクスを使用して、介在するタイム ステップを確認します。

step(sys,t) は、ベクトル t で指定した時間にステップ応答をプロットします。

step(sys1,sys2,...,sysN,___) は、複数の動的システムのステップ応答を同じプロット上にプロットします。すべてのシステムは入力数と出力数が同じでなければなりません。この構文では、前述の任意の入力引数の組み合わせで複数の動的システムが使用できます。

step(sys1,LineSpec1,...,sysN,LineSpecN,___) はプロット内の各システムの色、ライン スタイルおよびマーカーを指定します。前述の任意の入力引数の組み合わせで LineSpec を使用できます。追加のプロット カスタマイズ オプションが必要な場合は、代わりに stepplot を使用します。

step(___,opts) はステップ振幅や入力オフセットなど、ステップ応答を計算するための追加オプションを指定します。stepDataOptions を使用して、オプション セット opts を作成します。この構文では、前述の任意の入力引数の組み合わせで opts を使用できます。

ステップ応答データ

y = step(sys,t) は、ベクトル t で指定された時間における動的システム モデル sys のステップ応答を返します。この構文はプロットを描画しません。

[y,tOut] = step(sys)y の応答に対応する時間 tOut のベクトルも返します。時間の入力ベクトル t を指定しない場合、step はシステム ダイナミクスに基づいて tOut の長さとタイム ステップを選択します。

[y,tOut] = step(sys,tFinal) は、終了時間 tFinal までのステップ応答を計算します。step は、システム ダイナミクスに基づいて tOut のタイム ステップを選択します。

[y,t,x] = step(sys) は状態軌跡 x も返します。ここで、sysss モデルや idss モデルなどの状態空間モデルです。

[y,t,x,ysd] = step(sys) は、ステップ応答 y の標準偏差 ysd も計算します。ここで、sysidssidtf、または idnlarx モデルなどの同定されたモデルです。

[___] = step(___,opts) はステップ振幅や入力オフセットなど、ステップ応答を計算するための追加オプションを指定します。stepDataOptions を使用して、オプション セット opts を作成します。この構文では、前述の任意の入力引数の組み合わせで opts を使用できます。

すべて折りたたむ

以下の伝達関数で表される連続時間システムのステップ応答をプロットします。

sys(s)=4s2+2s+10.

この例では、伝達関数を表す tf モデルを作成します。零点-極-ゲイン (zpk) モデルや状態空間 (ss) モデルなど、他の動的システム タイプのステップ応答を同様にプロットできます。

sys = tf(4,[1 2 10]);

ステップ応答をプロットします。

step(sys)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

step プロットには、定常状態の応答を示す水平の点線が自動的に含まれます。MATLAB® Figure ウィンドウで、プロットを右クリックして、ピーク応答や整定時間など他のステップ応答の特性を表示できます。これらの特性の詳細については、stepinfoを参照してください。

離散時間システムのステップ応答をプロットします。システムは 0.2 秒のサンプル時間をもち、次の状態空間行列で表されます。

A = [1.6 -0.7;
      1  0];
B = [0.5; 0];
C = [0.1 0.1];
D = 0;

状態空間モデルを作成し、そのステップ応答をプロットします。

sys = ss(A,B,C,D,0.2);
step(sys)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

ステップ応答にはモデルの離散化が反映され、0.2 秒おきに計算される応答が表示されます。

次の伝達関数のステップ応答を調べます。

sys = zpk(-1,[-0.2+3j,-0.2-3j],1) * tf([1 1],[1 0.05]) 
sys =
 
            (s+1)^2
  ----------------------------
  (s+0.05) (s^2 + 0.4s + 9.04)
 
Continuous-time zero/pole/gain model.
step(sys)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

規定では、step は応答が向かっている定常状態を示す終了時間を選択します。このシステムには高速過渡状態がありますが、この時間スケールでは不明瞭です。過渡応答を詳しく調べるには、ステップ プロットを t = 15 秒に制限します。

step(sys,15)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

あるいは、ステップ応答を調べる正確な時間を、一定間隔で区切って指定することができます。たとえば、過渡状態の終わりからシステムが定常状態に到達するまでの応答を調べます。

t = 20:0.2:120;
step(sys,t)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

このプロットは t = 20 で開始しますが、step は常に t = 0 でステップ入力を適用します。

以下の 2 次状態空間モデルについて考えます。

[x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]+[1-102][u1u2]y=[1.96916.4493][x1x2]

A = [-0.5572,-0.7814;0.7814,0];
B = [1,-1;0,2];
C = [1.9691,6.4493];
sys = ss(A,B,C,0);

このモデルには 2 つの入力と 1 つの出力があるため、最初の入力から出力へと、2 番目の入力から出力への 2 つのチャネルがあります。各チャネルには独自のステップ応答があります。

step を使用すると、すべてのチャネル応答が計算されます。

step(sys)

Figure contains 2 axes. Axes 1 with title From: In(1) contains an object of type line. This object represents sys. Axes 2 with title From: In(2) contains an object of type line. This object represents sys.

左のプロットには最初の入力チャネルのステップ応答が表示され、右のプロットには 2 番目の入力チャネルのステップ応答が表示されます。step を使用して MIMO モデルの応答をプロットするたびに、モデルのすべての I/O チャネルを表すプロットの配列が生成されます。たとえば、5 つの状態、3 つの入力、および 2 つの出力をもつランダム状態空間モデルを作成し、そのステップ応答をプロットするとします。

sys = rss(5,2,3);
step(sys)

Figure contains 6 axes. Axes 1 with title From: In(1) contains an object of type line. This object represents sys. Axes 2 contains an object of type line. This object represents sys. Axes 3 with title From: In(2) contains an object of type line. This object represents sys. Axes 4 contains an object of type line. This object represents sys. Axes 5 with title From: In(3) contains an object of type line. This object represents sys. Axes 6 contains an object of type line. This object represents sys.

MATLAB Figure ウィンドウで、プロットを右クリックし、[I/O セレクター] を選択して、プロットをチャネルのサブセットに制限できます。

step を使用して、複数の動的システムの応答を同じ軸上にプロットできます。たとえば、PI コントローラーと PID コントローラーでシステムの閉ループ応答を比較します。システムの伝達関数を作成し、コントローラーを調整します。

H = tf(4,[1 2 10]);
C1 = pidtune(H,'PI');
C2 = pidtune(H,'PID');

閉ループ システムを作成し、そのステップ応答をプロットします。

sys1 = feedback(H*C1,1);
sys2 = feedback(H*C2,1);
step(sys1,sys2)
legend('PI','PID','Location','SouthEast')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent PI, PID.

既定では、step は、プロットするシステムごとに異なる色を選択します。入力引数 LineSpec を使用して色とライン スタイルを指定できます。

 step(sys1,'r--',sys2,'b')
 legend('PI','PID','Location','SouthEast')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent PI, PID.

最初の LineSpec "'r--' は、PI コントローラーでの応答を表す赤い破線を指定します。2 番目の LineSpec "'b' は、PID コントローラーでの応答を表す青い実線を指定します。凡例に、指定された色とライン スタイルが反映されます。プロットをさらにカスタマイズするには、stepplot を使用します。

「複数システムの応答の比較」の例では、1 つの軸に複数の個々のシステムの応答をプロットする方法を示します。モデル配列に複数の動的システムを配置すると、step はそのすべての応答を一度にプロットします。

モデル配列を作成します。この例では、固有振動数が異なる 2 次伝達関数の 1 次元配列を使用します。最初に、モデル配列のメモリを事前に割り当てます。次のコマンドで、零点とゲインの SISO 伝達関数からなる 1 行 5 列の行を作成します。最初の 2 つの次元は、モデルの出力と入力を表します。残りの次元は配列の次元です

 sys = tf(zeros(1,1,1,5));

配列を設定します。

w0 = 1.5:1:5.5;    % natural frequencies
zeta = 0.5;        % damping constant
for i = 1:length(w0)
   sys(:,:,1,i) = tf(w0(i)^2,[1 2*zeta*w0(i) w0(i)^2]);
end

(モデル配列とそれらの作成方法の詳細については、モデル配列を参照してください)。配列内のすべてのモデルのステップ応答をプロットします。

step(sys)

Figure contains an axes. The axes contains 5 objects of type line. This object represents sys.

step は、配列内のすべてのエントリの応答に同じライン スタイルを使用します。エントリを区別する 1 つの方法は、動的システム モデルの SamplingGrid プロパティを使用して配列内の各エントリを対応する w0 値に関連付けることです。

sys.SamplingGrid = struct('frequency',w0);

次に、応答を MATLAB Figure ウィンドウにプロットする場合は、トレースをクリックして、対応する周波数値を確認できます。

出力引数を指定すると、step は応答データの配列を返します。SISO システムの場合、応答データは、応答がサンプリングされる時間点の数と等しい長さの列ベクトルとして返されます。時間点のベクトルを指定するか、step でシステム ダイナミクスに基づいて時間点が自動的に選択されるようにします。たとえば、t = 0 ~ t = 5 秒の間の 101 の時間点における SISO システムのステップ応答を抽出します。

sys = tf(4,[1 2 10]);
t = 0:0.05:5;
y = step(sys,t);
size(y)
ans = 1×2

   101     1

MIMO システムの場合、応答データは次元 N x Ny x Nu の配列で返されます。NyNu は動的システムの出力および入力の数です。たとえば、2 入力、1 出力のシステムを表す、以下の状態空間モデルを考えます。

A = [-0.5572,-0.7814;0.7814,0];
B = [1,-1;0,2];
C = [1.9691,6.4493];
sys = ss(A,B,C,0);

t = 0 ~ t = 20 秒の間の 200 の時間点におけるこのシステムのステップ応答を抽出します。

t = linspace(0,20,200);
y = step(sys,t);
size(y)
ans = 1×3

   200     1     2

y(:,i,j) は、時間 t における j 番目の入力から i 番目の出力へのステップ応答を含む列ベクトルです。たとえば、2 番目の入力から出力へのステップ応答を抽出します。

y12 = y(:,1,2);
plot(t,y12)

Figure contains an axes. The axes contains an object of type line.

遅延をもつフィードバック ループを作成し、そのステップ応答をプロットします。

s = tf('s');
G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
sys = feedback(ss(G),1);
step(sys)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

表示されるシステム ステップ応答はカオス的です。内部遅延があるシステムのステップ応答は、再帰ジャンプなど、奇妙な動作をすることがあります。このような動作は、システムの特徴であり、ソフトウェアの異常ではありません。

既定では、stept = 0 で 0 から 1 へ変化する入力信号を適用します。振幅とオフセットをカスタマイズするには、stepDataOptions を使用します。たとえば、t = 0 で 1 から –1 へ変化する信号に対する SISO 状態空間モデルの応答を計算します。

A = [1.6 -0.7;
      1  0];
B = [0.5; 0];
C = [0.1 0.1];
D = 0;
sys = ss(A,B,C,D,0.2);

opt = stepDataOptions;
opt.InputOffset = 1;
opt.StepAmplitude = -2;

step(sys,opt)

Figure contains an axes. The axes contains an object of type line. This object represents sys.

任意の入力信号への応答には、lsimを使用します。

パラメトリックと同定されたモデルのステップ応答を、ノンパラメトリック (実測) モデルのステップ応答と比較します。また、3 σ の信頼領域も表示します。

データを読み込みます。

load iddata1 z1

パラメトリック モデルを推定します。

sys1 = ssest(z1,4);

ノンパラメトリック モデルを推定します。

sys2 = impulseest(z1);

比較用にステップ応答をプロットします。

t = (0:0.1:10)';
[y1, ~, ~, ysd1] = step(sys1,t);
[y2, ~, ~, ysd2] = step(sys2,t);
plot(t, y1, 'b', t, y1+3*ysd1, 'b:', t, y1-3*ysd1, 'b:')
hold on
plot(t, y2, 'g', t, y2+3*ysd2, 'g:', t, y2-3*ysd2, 'g:')

Figure contains an axes. The axes contains 6 objects of type line.

同定された時系列モデルのステップ応答を計算します。

時系列モデルは信号モデルとも呼ばれ、測定される入力信号がありません。このモデルのステップ図はその (測定されていない) ノイズ チャネルを入力チャネルに使用して、ステップ信号を適用します。

データを読み込みます。

load iddata9;

時系列モデルを推定します。

sys = ar(z9, 4);

ys は形式 A y(t) = e(t) のモデルで、e(t) はノイズ チャネルを表します。ステップ応答の計算のため、e(t) は入力チャネルとして扱われ、e@y1 という名前が付きます。

ステップ応答をプロットします。

step(sys)

Figure contains an axes. The axes with title From: e@y1 To: y1 contains an object of type line. This object represents sys.

非線形 ARX モデルの線形化を検証するために、線形モデルと非線形モデルの小振幅のステップ応答を比較します。

データを読み込みます。

load iddata2 z2;

非線形 ARX モデルを推定します。

nlsys = nlarx(z2,[4 3 10],'tree','custom',{'sin(y1(t-2)*u1(t))+y1(t-2)*u1(t)+u1(t).*u1(t-13)','y1(t-5)*y1(t-5)*y1(t-1)'},'nlr',[1:5, 7 9]);

定常状態入力値の 1 に対応する nlsys の平衡操作点を特定します。

u0 = 1;
[X,~,r] = findop(nlsys, 'steady', 1);
y0 = r.SignalLevels.Output;

この操作点での nlsys の線形近似を取得します。

sys = linearize(nlsys,u0,X);

小振幅のステップ応答を nlsys と比較することにより、sys の有効性を検証します。

非線形システム nlsys は、(u0, y0) によって決められた平衡レベルで動作しています。この定常状態について、サイズ 0.1 のステップ摂動を導入し、対応する応答を計算します。

opt = stepDataOptions;
opt.InputOffset = u0;
opt.StepAmplitude = 0.1;
t = (0:0.1:10)';
ynl = step(nlsys, t, opt);

線形システム sys は入力の摂動と対応する出力の摂動の関係を表します。非線形システムの平衡値については認識しません。

線形システムのステップ応答をプロットします。

opt = stepDataOptions;
opt.StepAmplitude = 0.1;
yl = step(sys, t, opt);

定常状態オフセット y0 を線形システムの応答に追加し、応答をプロットします。

plot(t, ynl, t, yl+y0)
legend('Nonlinear', 'Linear with offset')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Nonlinear, Linear with offset.

入力引数

すべて折りたたむ

動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

  • tfzpkss モデルなどの連続時間または離散時間の数値 LTI モデル。

  • genssuss モデルなどの一般化された、あるいは不確かさをもつ LTI モデル (不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です)。

    • 調整可能な制御設計ブロックの場合、関数は応答データをプロットする処理と返す処理の両方においてモデルをその現在の値で評価します。

    • 不確かさをもつ制御設計ブロックの場合、関数はモデルのノミナル値とランダム サンプルをプロットします。出力引数を使用する場合、関数はノミナル モデルのみの応答データを返します。

  • sparss モデルや mechss モデルなどのスパース状態空間モデル。

  • idtfidssidproc モデルなどの同定された LTI モデル。このようなモデルの場合、関数は信頼区間をプロットし、周波数応答の標準偏差を返すこともできます。信頼領域を含む同定されたモデルのステップ応答を参照してください。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です)。

step は、frdgenfrdidfrd モデルなど、周波数応答データ モデルをサポートしません。

sys がモデルの配列である場合、この関数は同じ座標軸上に配列のすべてのモデルの応答をプロットします。モデル配列内のシステムのステップ応答を参照してください。

ステップ応答の終了時間。正のスカラー値として指定します。step は、t = 0 から t = tFinal へのステップ応答をシミュレートします。

  • 連続時間システムの場合、この関数は、システム ダイナミクスから自動的にステップ サイズと点数を判定します。システム時間単位で tFinal を表し、sysTimeUnit プロパティで指定されます。

  • 離散時間システムの場合、この関数は sys のサンプル時間をステップ サイズとして使用します。システム時間単位で tFinal を表し、sysTimeUnit プロパティで指定されます。

  • サンプル時間を指定しない離散時間システム (Ts = -1) では、steptFinal を、シミュレートするサンプリング周期の数として解釈します。

ステップ応答を計算する時間ベクトル。正のスカラー値のベクトルとして指定します。システム時間単位で t を表し、sysTimeUnit プロパティで指定されます。

  • 連続時間モデルの場合は、tTi:dt:Tf 形式で指定します。各タイム ステップの応答を取得するために、関数は dt を連続システムに対する離散近似のサンプル時間として使用します (アルゴリズムを参照)。

  • 離散時間モデルの場合は、tTi:Ts:Tf 形式で指定します。ここで、Tssys のサンプル時間です。

step は、Ti に関係なく、常に t = 0 でステップ入力を適用します。

ライン スタイル、マーカー、色。1、2、または 3 文字の string または文字ベクトルとして指定します。文字が表示される順序は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定した場合、プロットはラインなしでマーカーのみを表示します。この引数の設定の詳細については、関数 plot の入力引数 LineSpec を参照してください。

例: 'r--' は赤い破線を指定します。

例: '*b' は青いアスタリスク マーカーを指定します。

例: 'y' は黄色いラインを指定します。

適用されるステップ信号の入力オフセットと振幅。stepDataOptions オプション セットとして指定します。既定では、step は、時間 t = 0 に 0 から 1 に変化する入力を適用します。この入力引数を使用して、ステップ入力の初期値と最終値を変更します。例については、カスタム ステップ入力への応答を参照してください。

出力引数

すべて折りたたむ

ステップ応答データ。配列として返されます。

  • SISO システムの場合、y は、t (指定した場合) または tOut (t を指定しない場合) と同じ長さの列ベクトルです。

  • 単入力、多出力システムの場合、y は、時間サンプルと同じ行数および出力と同じ列数の行列です。したがって、y の j 番目の列、つまり y(:,j) には、入力から j 番目の出力へのステップ応答が含まれます。

  • MIMO システムの場合、各入力チャネルのステップ応答は y の 3 番目の次元に沿って積み上げられます。y の次元は N x Ny x Nu です。ここで、

    • N は時間サンプルの数です。

    • Ny はシステムの出力数です。

    • Nu はシステムの入力数です。

    したがって、y(:,i,j) は、t または tOut で指定された時間における j 番目の入力から i 番目の出力へのステップ応答を含む列ベクトルです。

ステップ応答が計算される時間。ベクトルとして返されます。時間の特定のベクトル t を指定しない場合、step は、システム ダイナミクスに基づいて時間ベクトルを選択します。時間は sys の時間単位で表されます。

状態軌跡。配列として返されます。sys が状態空間モデルの場合、x には、t または tOut の各時間における sys の状態の発展が含まれます。x の次元は N x Nx x Nu です。ここで、

  • N は時間サンプルの数です。

  • Nx は状態の数です。

  • Nu はシステムの入力数です。

そのため、k 番目の入力で挿入されたステップへの応答の状態の発展は、配列 x(:,:,k) で与えられます。行ベクトル x(i,:,k) には、i 番目のタイム ステップの状態値が含まれます。

同定されたモデルのステップ応答の標準偏差。y と同じ次元の配列として返されます。sys にパラメーター共分散情報が含まれていない場合、ysd は空です。

ヒント

  • 追加のプロット カスタマイズ オプションが必要な場合は、代わりに stepplot を使用します。

  • 任意の入力信号へのシステム応答をシミュレーションするには、lsim を使用します。

アルゴリズム

内部遅延のない連続時間モデルのサンプルを取得するために、step はそのモデルを状態空間モデルに変換し、入力のゼロ次ホールドを使用してそれらのモデルを離散化します。step では、入力時間ベクトル tt = 0:dt:Tf 形式で指定した場合を除き、システム ダイナミクスに基づいてこの離散化にサンプリング時間が自動的に選択されます。その場合、stepdt をサンプリング時間として指定します。結果として得られるシミュレーション タイム ステップ tOut は、間隔 dt で等間隔にサンプリングされます。

内部遅延があるシステムの場合、Control System Toolbox™ ソフトウェアは可変ステップ ソルバーを使用します。その結果、タイム ステップ tOut は等間隔にサンプリングされません。

参照

[1] L.F. Shampine and P. Gahinet, "Delay-differential-algebraic equations in control theory," Applied Numerical Mathematics, Vol. 56, Issues 3–4, pp. 574–588.

R2006a より前に導入