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

step

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

構文

step(sys)
step(sys,Tfinal)
step(sys,t)
step(sys1,sys2,...,sysN)
step(sys1,sys2,...,sysN,Tfinal)
step(sys1,sys2,...,sysN,t)
y = step(sys,t)
[y,t] = step(sys)
[y,t] = step(sys,Tfinal)
[y,t,x] = step(sys)
[y,t,x,ysd] = step(sys)
[y,...] = step(sys,...,options)

説明

step は動的システムの単位ステップ応答を計算します。状態空間の場合は、初期状態 0 と仮定されます。出力引数なしで呼び出された場合、この関数は画面上にステップ応答をプロットします。

step(sys) は、任意の動的システム モデル sys のステップ応答をプロットします。このモデルは、連続時間または離散時間、SISO または MIMO のいずれとすることも可能です。複数入力システムのステップ応答は、各入力チャネルのステップ応答の集まりです。シミュレーションの持続時間は、システムの極と零点に基づいて自動的に決定されます。

step(sys,Tfinal) は、t = 0 から最終時間 t = Tfinal までのステップ応答を シミュレーションします。システム時間単位で Tfinal を表し、sysTimeUnit プロパティで指定されます。サンプル時間を指定しない離散時間システム (Ts = -1) では、stepTfinal を、シミュレートするサンプリング周期の数として解釈します。

step(sys,t) は、シミュレーションのためにユーザーが指定した時間ベクトル t を使用します。システム時間単位で t を表し、sysTimeUnit プロパティで指定されます。離散時間モデルでは、tTi:Ts:Tf の形式です。ここで、Ts はサンプル時間です。連続時間モデルに対して、tTi:dt:Tf の形式で与え、ここで、dt は連続システムに対する離散近似のサンプル時間になります (アルゴリズムを参照してください)。step コマンドは、Ti に関係なく、常に t=0 でステップ入力を適用します。

1 つの図で複数のモデル sys1、...、sysN のステップ応答をプロットするには、次の構文を使用します。

step(sys1,sys2,...,sysN)

step(sys1,sys2,...,sysN,Tfinal)

step(sys1,sys2,...,sysN,t)

単一プロット上にプロットされたシステムはすべて、入力数と出力数が等しくなければなりません。ただし、単一プロット上に連続時間システムと離散時間システムを組み合わせてプロットすることもできます。この構文は、複数システムのステップ応答を比較するときに役立ちます。

システムごとに、独自の色、ラインスタイル、マーカー、またはこの 3 種類すべてを指定することもできます。たとえば、

step(sys1,'y:',sys2,'g--')

sys1 のステップ応答を黄色の点線、sys2 のステップ応答を緑色の破線でプロットします。

出力引数付きで呼び出された場合:

y = step(sys,t)

[y,t] = step(sys)

[y,t] = step(sys,Tfinal)

[y,t,x] = step(sys)

step は出力応答 y、シミュレーションに使用する時間ベクトル t (入力引数として提供されている場合)、および状態軌跡 x (状態空間モデルのみ) を返します。画面上に描画するプロットはありません。単入力システムの場合、y には時間サンプルと同じ数の行 (t の長さ) および出力と同じ数の列があります。多入力の場合、各入力チャネルのステップ応答は y の 3 番目の次元に沿って積み上げられます。y の次元は、

(lengthoft)×(numberofoutputs)×(numberofinputs)

になり、y(:,:,j)j 番目の入力チャネルに入る単位ステップ コマンドに対する応答を与えます。同様に、x の次元は次のようになります。

(lengthoft)×(numberofstates)×(numberofinputs)

同定されたモデルの場合 (idlti および idnlmodlel を参照)、[y,t,x,ysd] = step(sys) は応答 y の標準偏差 ysd も計算します (sys にパラメーター共分散情報が含まれていない場合、ysd は空になります)。

[y,...] = step(sys,...,options) はステップ振幅や入力オフセットなど、ステップ応答を計算するための追加オプションを指定します。stepDataOptions を使用して、オプション セット options を作成します。

すべて折りたたむ

次の 2 次型状態空間モデルのステップ応答をプロットします。

a = [-0.5572,-0.7814;0.7814,0];
b = [1,-1;0,2];
c = [1.9691,6.4493];
sys = ss(a,b,c,0);
step(sys)

左のプロットには最初の入力チャネルのステップ応答が表示され、右のプロットには 2 番目の入力チャネルのステップ応答が表示されます。

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

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

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

パラメトリックと同定されたモデルのステップ応答を、ノンパラメトリック (実測) モデルのステップ応答と比較します。また、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:')

非線形 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')

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

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

データを読み込みます。

load iddata9;

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

sys = ar(z9, 4);

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

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

step(sys)

ヒント

単位などのプロットのプロパティを変更することができます。プロットのプロパティの変更方法の詳細は、プロットをカスタマイズする方法を参照してください。

アルゴリズム

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

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

参考文献

[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 より前に導入