Main Content

initial

状態空間モデルの初期状態に対するシステム応答

    説明

    状態空間モデルおよびスパース状態空間モデルについて、initial は初期状態 xinit に対するシステムの自由応答 y を計算します。

    • 連続時間:

      x˙=Ax,x(t0)=xinity=Cx

    • 離散時間:

      x[k+1]=Ax[k]x[k0]=xinity=Cx[k]

    線形時変状態空間モデルまたは線形パラメーター変動状態空間モデルの場合、initial は初期状態 xinit、初期パラメーター pinit (LPV モデル)、およびオフセット値に保持される入力 (u(t) = u0(t) または u(t) = u0(t,p)) を使用して応答を計算します。これは、局所的な線形ダイナミクスの初期条件応答に対応します。

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

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

    [y,tOut] = initial(sys,xinit,[t0,tFinal]) は、t0 から tFinal までの応答をシミュレートします。 (R2023b 以降)

    [y,tOut] = initial(sys,xinit,t) は、ベクトル t で指定された時間における sys の初期応答を返します。

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

    [y,tOut] = initial(sys,{xinit,pinit},t,p) は、LPV モデルの初期パラメーター値とパラメーターの軌跡 p も指定します。暗黙的なパラメーターの軌跡には pinit が必要です。 (R2023a 以降)

    [y,tOut,x] = initial(sys,xinit) は、出力応答 y、時間ベクトル tOut、および状態軌跡 x を返します。配列 y は、時間サンプル数 (tOut の長さ) と同じ行数、および出力数と同じ列数をもちます。同様に、x の行数は length(tOut) であり、状態数と同じ列数をもちます。

    [y,tOut,x,pOut] = initial(sys,xinit,t,p) は、syslpvss モデルの場合にパラメーターの軌跡 pOut も返します。 (R2023a 以降)

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

    すべて折りたたむ

    この例では、5 つの状態をもつランダムな状態空間モデルを生成し、初期状態に対するシステム応答のプロットを作成します。

    rng("default")
    sys = rss(5);
    x0 = [1,2,3,4,5];
    initial(sys,x0)

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

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]y=[1.96916.4493][x1x2].

    次の初期条件を取ります。

    x(0)=[10].

    a = [-0.5572, -0.7814; 0.7814, 0];
    c = [1.9691  6.4493];
    x0 = [1 ; 0];
    
    sys = ss(a,[],c,[]);
    initial(sys,x0)

    次の 2 つの入力、2 つの出力の動的システムについて考えます。

    sys(s)=[03ss2+s+10s+1s+52s+6].MIMO system

    初期条件応答プロットは状態空間モデルに対してのみサポートされているため、sys を状態空間形式に変換します。

    sys = ss([0, tf([3 0],[1 1 10]) ; tf([1 1],[1 5]), tf(2,[1 6])]);
    size(sys)
    State-space model with 2 outputs, 2 inputs, and 4 states.
    

    結果の状態空間モデルには 4 つの状態があります。そのため、初期条件ベクトルに 4 つの要素を与えます。

    x0 = [0.3,0.25,1,4];

    初期条件応答プロットを作成します。

    initial(sys,x0);

    結果のプロットには、sys の各出力について 1 つ、計 2 つのサブプロットが含まれています。

    この例では、次の零点-極-ゲイン モデルの初期条件応答を調べて、プロットを tFinal = 15 秒に制限します。

    initial は状態空間モデルのみをサポートしているため、まず zpk モデルを ss モデルに変換します。

    sys = ss(zpk(-1,[-0.2+3j,-0.2-3j],1)*tf([1 1],[1 0.05]));
    tFinal = 15;
    x0 = [4,2,3];

    次に、初期条件応答プロットを作成します。

    initial(sys,x0,tFinal);

    この例では、3 つの動的システムの初期条件応答をプロットします。

    まず、3 つのモデルを作成し、初期条件を与えます。すべてのモデルは状態数が同じでなければなりません。

    rng('default');
    sys1 = rss(4); 
    sys2 = rss(4);
    sys3 = rss(4);
    x0 = [1,1,1,1];

    5 秒にわたる時間ベクトル t を使用して、3 つのモデルの初期条件応答をプロットします。

    t = 0:0.1:5;
    initial(sys1,'r--',sys2,'b',sys3,'g-.',x0,t)

    2 つの状態をもつ次の状態空間モデルの初期条件応答データを抽出します。

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]y=[1.96916.4493][x1x2].

    次の初期条件を使用します。

    x(0)=[10].

    a = [-0.5572, -0.7814; 0.7814, 0];
    c = [1.9691  6.4493];
    x0 = [1 ; 0];
    sys = ss(a,[],c,[]);
    [y,tOut,x] = initial(sys,x0);

    配列 y は、時間サンプル数 (tOut の長さ) と同じ行数、および出力数と同じ列数をもちます。同様に配列 x は、時間サンプル数 (tOut の長さ) と等しい行数、および状態数と同じ列数をもちます。

    この例では、6 つの状態と、3 出力 2 入力をもつ状態空間モデルの初期条件応答データを抽出します。

    まず、モデルを作成して初期条件を指定します。

    rng('default');
    sys = rss(6,3,2); 
    x0 = [0.1,0.3,0.05,0.4,0.75,1];

    15 秒にわたる時間ベクトル t を使用して、モデルの初期条件応答を抽出します。

    t = 0:0.1:15;
    [y,tOut,x] = initial(sys,x0,t);

    配列 y は、時間サンプル数 (tOut の長さ) と同じ行数、および出力数と同じ列数をもちます。同様に配列 x は、時間サンプル数 (tOut の長さ) と等しい行数、および状態数と同じ列数をもちます。

    この例では、throttleLPV.m に、15 度から 90 度の開範囲で線形的に動作する非線形エンジン スロットルのダイナミクスが定義されています。

    lpvss を使用してモデルを作成します。このモデルは、モデルの最初の状態であるスロットル角度でパラメーター化されます。

    c0 = 50;
    k0 = 120;
    K0 = 1e4;
    b0 = 4e4;
    yf = 15*K0/(k0+K0);
    Ts = 0;
    sys = lpvss("x1",@(t,p) throttleLPV(p,c0,k0,b0,K0),Ts,0,15);

    このモデルの初期応答を軌跡 p(t) に沿って計算できます。

    小さい角速度で線形範囲の下限から開始した場合の応答を計算します。

    pFcn = @(t,x,u)x(1);
    x0 = [15;10]; 
    p0 = x0(1);
    t = linspace(0,0.6,500);
    initial(sys,{x0,p0},t,pFcn)

    線形範囲の上限にヒットするのに十分な角速度で線形範囲の下限から開始した場合の応答を計算します。

    x0 = [15;5e3]; 
    p0 = x0(1);
    t = linspace(0,1,1000);
    initial(sys,{x0,p0},t,pFcn)

    データ関数を表示します。

    type throttleLPV.m
    function [A,B,C,D,E,dx0,x0,u0,y0,Delays] = throttleLPV(x1,c,k,b,K)
    % LPV representation of engine throttle dynamics.
    % Ref: https://www.mathworks.com/help/sldo/ug/estimate-model-parameter-values-gui.html
    % x1: scheduling parameter (throttle angle; first state of the model)
    % c,k,b,K: physical parameters
    
    A = [0 1; -k -c];
    B = [0; b];
    C = [1 0];
    D = 0;
    E = [];
    Delays = [];
    x0 = [];
    u0 = [];
    y0 = [];
    
    % Nonlinear displacement value
    NLx = max(90,x1(1))-90+min(x1(1),15)-15;
    % Capture the nonlinear contribution as a state-derivative offset
    dx0 = [0;-K*NLx]; 
    

    入力引数

    すべて折りたたむ

    動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。以下のタイプの状態空間モデルのみを使用できます。

    • 連続時間または離散時間の数値 ss モデル。

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

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

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

    • sparss モデルや mechss モデルなどのスパース状態空間モデル。スパース状態空間モデルの最終時間 tFinal を指定しなければなりません。

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

    sys がモデルの配列である場合、この関数は同じ座標軸上に配列のすべてのモデルの応答をプロットします。

    応答計算の終了時間。正のスカラー値として指定します。initial は、t = 0 から t = tFinal まで応答をシミュレートします。

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

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

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

    R2023b 以降

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

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

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

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

    状態の初期条件。ベクトルとして指定します。xinit の長さは、sys の状態数と同じでなければなりません。

    R2023a 以降

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

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

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

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

    R2023a 以降

    LPV モデルのパラメーターの初期値。ベクトルとして指定します。pinit の長さは、sys のパラメーター数と同じでなければなりません。

    出力引数

    すべて折りたたむ

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

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

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

    • MIMO システムの場合、y の次元は N 行 Ny 列になります。ここで、

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

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

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

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

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

    • Nx は状態の数です。

    パラメーターの軌跡。配列として返されます。sys が線形パラメーター変動 (lpvss) モデルの場合、pOut には、sys のパラメーターの発展が含まれます。pOut の次元は N 行 Np 列です。ここで次のようになります。

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

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

    バージョン履歴

    R2006a より前に導入

    すべて展開する