Main Content

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

step

動的システムのステップ応答

説明

stepU から U + dU after td time units. までの入力値のステップ変化に対するステップ応答を計算します。

Step response plot characterized by start time, final time, baseline input, step amplitude, and time delay.

ここで

  • t0 は開始時間です。

  • td はステップ遅延です。

  • tf は最終時間です。

  • U はベースライン入力値です。

  • dU はステップ振幅です。

既定では、関数は t0 = 0、U = 0、dU = 1、および td = 0 でステップを適用します。ただし、RespConfig を使用してこれらの値を構成できます。また、初期状態 x(t0) を指定することもできます。そうしなかった場合、step では、初期状態としてシステムが入力レベル U で停止しているものと想定されます。

[y,tOut] = step(sys) は動的システム sys のステップ応答 y を計算します。時間ベクトル tOutsys の時間単位で表されます。step では、システム ダイナミクスに基づいてシミュレーションのタイム ステップと期間が自動的に決まります。

[y,tOut] = step(sys,tFinal) は、t = 0 から終了時間 t = tFinal までのステップ応答を計算します。

[y,tOut] = step(sys,[t0,tFinal])t0 から tFinal までのステップ応答を計算します。ステップ遅延 td を指定した応答構成では、関数は時間 t = t0 + td におけるステップを適用します。 (R2023b 以降)

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

[y,tOut] = step(sys,t,p) は、線形パラメーター変動 (LPV) モデルのパラメーターの軌跡 p も指定します。 (R2023a 以降)

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

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

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

[y,tOut,x,~,pOut] = step(sys,t,p,___) は、lpvss モデルのパラメーターの軌跡 pOut も返します。 (R2023a 以降)

step(sys,___)sys の応答をプロットします。この構文は、stepplot(sys,__) と等価です。追加のプロット カスタマイズ オプションが必要な場合は、代わりに stepplot を使用します。

すべて折りたたむ

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

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

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

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

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

step(sys)

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

離散時間システムのステップ応答をプロットします。システムは 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)

ステップ応答にはモデルの離散化が反映され、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)

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

step(sys,15)

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

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

このプロットは 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)

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

sys = rss(5,2,3);
step(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')

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

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

最初の 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

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

step(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×Ny×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)

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

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

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

既定では、stept = 0 で 0 から 1 へ変化する入力信号を適用します。振幅とオフセットをカスタマイズするには、RespConfig を使用します。たとえば、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 = RespConfig;
opt.InputOffset = 1;
opt.Amplitude = -2;

step(sys,opt)

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

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

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

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

データを読み込みます。

load iddata9;

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

sys = ar(z9, 4);

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

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

step(sys)

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

データを読み込みます。

load iddata2 z2;

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

nlsys = nlarx(z2,[4 3 10],idTreePartition,'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 = RespConfig;
opt.InputOffset = u0;
opt.Amplitude = 0.1;
t = (0:0.1:10)';
ynl = step(nlsys, t, opt);

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

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

opt = RespConfig;
opt.Amplitude = 0.1;
yl = step(sys, t, opt);

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

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

LPV (lpvss (Control System Toolbox)) モデルのステップ応答を計算してプロットします。この例では、fcnMaglev.m で定義された浮遊するボールのモデルの外乱 du に対する閉ループ ステップ応答をシミュレートします。

maglev-feedback.png

モデルを作成し、離散化します。

hmin = 0.05; 
hmax = 0.25;
h0 = (hmin+hmax)/2;
Ts = 0.01;
Glpv = lpvss("h",@fcnMaglev,0,0,h0);
Glpvd = c2d(Glpv,Ts,"tustin"); 

3 つの高さの値について LPV モデルをサンプリングし、PID コントローラーを調整します。

hpid = linspace(hmin,hmax,3);
[Ga,Goffset] = sample(Glpvd,[],hpid);
wc = 50;
Ka = pidtune(Ga,"pidf",wc);
Ka.Tf = 0.01;

ゲイン スケジュール PID コントローラーを作成します。

Ka.SamplingGrid = struct("h",hpid);
Koffset = struct("y",{Goffset.u});
Clpv = ssInterpolant(ss(Ka),Koffset);

閉ループ モデルを作成します。

CL = feedback(Glpvd*[1,Clpv],1,2,1);
CL.InputName = {'du';'href'};
CL.OutputName = "h";

h = h0 の定常状態電流を取得して、プラント入力のステップ外乱に適切なサイズを計算します。

[~,~,~,~,~,~,~,u0] = Glpv.DataFunction(0,h0);

入力外乱に対する応答と基準でのステップ変化を計算してプロットします。入力オフセット du = 0 と h = h0 を設定して、定常状態開始条件を指定します。

t = 0:Ts:2;
pFcn = @(k,x,u) x(1);
Config = RespConfig( ...
    InputOffset=[0;h0], ...
    Amplitude=0.2*[u0;h0]*Ts, ...
    Delay=0.5, ...
    InitialParameter=h0);
step(CL,t,pFcn,Config)
title("Current Step Disturbance and Height Step Change")

入力引数

すべて折りたたむ

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

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

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

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

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

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

  • idtfidssidproc モデルなどの同定された LTI モデル。このようなモデルの場合、関数は信頼区間をプロットし、周波数応答の標準偏差を返すこともできます。信頼領域を含む同定されたモデルのステップ応答を参照してください。

  • 線形時変 (ltvss (Control System Toolbox)) モデルと線形パラメーター変動 (lpvss (Control System Toolbox)) モデル。

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

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

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

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

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

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

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

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

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

R2023b 以降

ステップ応答の時間範囲。正のスカラー値の 2 要素ベクトルとして指定します。step は、t = t0 から t = tFinal までのステップ応答をシミュレートします。

RespConfig を使用してステップ遅延 td を指定した場合、関数は t = t0+td におけるステップを適用します。

LPV モデルのパラメーターの軌跡。行列または関数ハンドルとして指定します。

  • 外因的または明示的な軌跡の場合、p を次元 NNp 列の行列として指定します。ここで、N は時間サンプルの数、Np はパラメーターの数です。

    したがって、行ベクトル p(i,:) には、i 番目のタイム ステップのパラメーター値が含まれます。

  • 内因的または暗黙的な軌跡の場合、pp = F(t,x,u) (連続時間) および p = F(k,x,u) (離散時間) の形式の関数ハンドルとして指定し、時間 t または時間サンプル k、状態 x、および入力 u の関数としてパラメーターを与えます。

    このオプションは、準 LPV モデルをシミュレートする場合に便利です。例については、LPV モデルのステップ応答を参照してください。

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

オフセット (x0(t),u0(t)) の lpvss (Control System Toolbox) モデルおよび ltvss (Control System Toolbox) モデルの場合、RespConfig を使用して u0(t,p) を基準とする入力を定義し、シミュレーションを状態 x0(t,p) で初期化できます。

出力引数

すべて折りたたむ

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

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

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

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

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

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

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

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

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

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

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

  • Nx は状態の数です。

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

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

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

パラメーターの軌跡。配列として返されます。sys が線形パラメーター変動モデルの場合、pOut には、t または tOut の各時間における sys のパラメーターの発展が含まれます。pOut の次元は N×Np×Nu です。ここで次のようになります。

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

  • Np はパラメーターの数です。

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

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

ヒント

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

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

アルゴリズム

内部遅延のない連続時間モデルのサンプルを取得するために、step はそのモデルを状態空間モデルに変換し、入力のゼロ次ホールドを使用してそれらのモデルを離散化します。step では、入力時間ベクトル tt = T0: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 より前に導入

すべて展開する

参考

関数

アプリ