Main Content

lsimplot

追加のプロット カスタマイズ オプションを使用して任意の入力に対する動的システムのシミュレーションされた時間応答をプロットする

説明

lsimplot では、lsim よりも広範囲のプロット カスタマイズ オプションを使用して、任意の入力に対する動的システムのシミュレーションされた時間応答をプロットできます。lsimplot を使用してプロット ハンドルを取得し、それを使用して軸座標のラベル、軸座標の範囲、軸座標の単位の変更など、プロットをカスタマイズできます。lsimplot を使用して、座標軸ハンドルで表される既存の座標軸のセット上にシミュレーションされた時間応答プロットを描画することもできます。プロット ハンドルを使用して既存のシミュレーションされた時間応答プロットをカスタマイズするには、次の手順に従います。

  1. プロット ハンドルを取得

  2. getoptions を使用してオプション セットを取得

  3. setoptions を使用してプロットを更新し、必要なオプションを変更

詳細については、コマンド ラインからの応答プロットのカスタマイズを参照してください。既定のオプションを使用してシミュレーションされた時間応答プロットを作成するか、シミュレーションされた応答データを抽出するには、lsim を使用します。

h = lsimplot(sys) は、動的システム モデル sys に対して、駆動入力、時間ベクトルおよび初期状態を対話的に指定できる線形シミュレーション ツールを開きます。また、プロット ハンドル h を返します。getoptions コマンドと setoptions コマンドを使ってプロットをカスタマイズするために、このハンドル h を使用できます。

線形解析に線形シミュレーション ツールを使用する方法の詳細については、線形シミュレーション ツールの使用を参照してください。

h = lsimplot(sys,u,t) は、入力信号 u および対応する時間ベクトル t に対するモデル sys のシミュレーションされた時間応答をプロットします。MIMO システムに対して、u は、入力数と同数の列をもつ行列で、i 番目の行は、時間 t(i) での入力値を指定します。SISO システムに対して、入力 u は、行ベクトルまたは列ベクトルのいずれかとして指定できます。

h = lsimplot(sys1,sys2,...,sysN,u,t) は、入力 u および時間ベクトル t を使用して複数の動的システム sys1,sys2,…,sysN のシミュレーションされた応答を同じプロット上にプロットします。この構文を使用するには、すべてのシステムで入力数と出力数が同じでなければなりません。

h = lsimplot(sys1,LineSpec1,...,sysN,LineSpecN,u,t) は各システムのシミュレーションされた時間応答のライン スタイル、マーカー タイプ、および色を設定します。この構文を使用するには、すべてのシステムで入力数と出力数が同じでなければなりません。

h = lsimplot(___,x0) はさらに初期状態値のベクトル x0 を指定します。このとき、sys は状態空間モデルになります。

h = lsimplot(___,method)lsimplot によるサンプル間の入力値の内挿法を指定します。このとき、sys は連続時間モデルになります。

h = lsimplot(AX,___) は、ハンドル AX をもつ現在の Figure の Axes オブジェクトにシミュレーションされた応答をプロットします。

h = lsimplot(___,plotoptions) は、plotoptions で指定されたオプション セットを使用してシミュレーションされた応答をプロットします。これらのオプションを使用して、コマンド ラインからプロットの外観をカスタマイズできます。plotoptions に指定する設定は、lsimplot を実行する MATLAB® セッションの基本設定をオーバーライドします。したがって、ローカルの基本設定にかかわらず、同じ外観の複数のプロットを生成するスクリプトを記述する場合、この構文が有用です。

すべて折りたたむ

次の例では、時間単位を分に変更し、シミュレーションされた応答プロットに対するグリッドをオンにします。次の伝達関数について考えます。

sys = tf(3,[1 2 3]);

任意の入力信号に対するこのシステムの応答を計算するには、応答を計算する時間 t のベクトルと、対応する信号値を含むベクトル u を使用して lsimplot を指定します。たとえば、時間 t = 0 に 0 で開始され、t = 1 の 0 から t = 2 の 1 まで上昇した後、1 で状態を保つ、ランプ ステップ信号に対するシステム応答をプロットします。t を定義し、u の値を計算します。

t = 0:0.04:8;
u = max(0,min(t-1,1));

lsimplot を使用し、プロット ハンドル h を使って信号に対するシステム応答をプロットします。

h = lsimplot(sys,u,t);

プロットには、適用された入力 (u,t) がグレー、システム応答が青で示されています。

プロット ハンドルを使用して時間単位を分に変更し、グリッドをオンにします。そのためには、setoptions を使用してプロット ハンドル h のプロパティを編集します。

setoptions(h,'TimeUnits','minutes','Grid','on')

setoptions を呼び出すと、プロットは自動的に更新されます。

または、timeoptions コマンドを使用して、必要なプロット オプションを指定することもできます。最初に、ツールボックス基本設定に基づいてオプション セットを作成します。

plotoptions = timeoptions('cstprefs');

時間単位を分に設定してグリッドを有効にすることで、オプション セットのプロパティを変更します。

plotoptions.TimeUnits = 'minutes';
plotoptions.Grid = 'on';
lsimplot(sys,u,t,plotoptions);

lsimplot を使用して、複数の動的システムのシミュレーションされた応答を同じ軸にプロットできます。たとえば、PI コントローラーと PID コントローラーでシステムの閉ループ応答を比較します。次に、正規化を有効にしてグリッドをオンにすることで、プロットをカスタマイズします。

最初に、システムの伝達関数を作成し、コントローラーを調整します。

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

閉ループ システムを作成します。

sys1 = feedback(H*C1,1);
sys2 = feedback(H*C2,1);

周期 4 秒の矩形波に対する両方のシステムの応答をプロットします。

[u,t] = gensig("square",4,12);
h1 = lsimplot(sys1,sys2,u,t);
legend("PI","PID")

setoptions を使用して正規化を有効にし、グリッドをオンにします。

setoptions(h1,'Normalize','on','Grid','on')

setoptions を呼び出すと、プロットは自動的に更新されます。

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

h2 = lsimplot(sys1,"r--",sys2,"b",u,t);
legend("PI","PID")
setoptions(h2,'Normalize','on','Grid','on')

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

既定では、lsimplot は、シミュレーションの開始時にすべての状態が 0 であると仮定して、モデルをシミュレーションします。状態空間モデルの応答をシミュレートする場合は、オプションの x0 入力引数を使用して、非ゼロの初期状態の値を指定します。次の 2 状態の SISO 状態空間モデルを考えてみます。

A = [-1.5 -3;
      3   -1];
B = [1.3; 0];
C = [1.15 2.3];
D = 0;
sys = ss(A,B,C,D);

2 秒の入力のない既知の初期状態のセットから展開して、単位ステップの変更を適用できるようにするとします。初期状態値のベクトル x0 を指定し、入力ベクトルを作成します。

x0 = [-0.2 0.3];
t = 0:0.05:8;
u = zeros(length(t),1);
u(t>=2) = 1;

最初に、timeoptions を使用して既定のオプション セットを作成します。

plotoptions = timeoptions;

次に、オプション セット plotoptions の必要なプロパティを変更し、ゼロ次ホールド オプションでシミュレーションされた応答をプロットします。

plotoptions.Title.FontSize = 15;
plotoptions.Title.Color = [0 0 1];
plotoptions.Grid = 'on';
h = lsimplot(sys,u,t,x0,plotoptions,'zoh');
hold on
title('Simulated Time Response with Initial Conditions')

プロットの最初の半分には、初期状態値 [-0.2 0.3] からのシステムの最初の変化を示します。t = 2 でステップが入力に変わり、プロットにはその時点における状態値から始まるこの新しい信号に対するシステム応答が示されます。plotoptions は固定のオプション セットで開始されるため、プロットの結果は MATLAB セッションのツールボックス基本設定とは独立したものになります。

入力引数

すべて折りたたむ

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

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

  • sparss モデルまたは mechss モデルなどのスパース状態空間モデル。スパース モデルを使用する場合は最終時間 tFinal を指定しなければなりません。

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

    • 調整可能な制御設計ブロックの場合、関数はシミュレーションされた応答をプロットするモデルをその現在の値で評価します。

    • 不確かさをもつ制御設計ブロックの場合、関数はモデルのノミナル値とランダム サンプルをプロットします。

  • idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox) モデルなどの同定された LTI モデル。同定されたモデルの場合は、sim (System Identification Toolbox) コマンドも使用できます。このコマンドはシミュレーションされた応答と状態軌跡の標準偏差を計算できます。sim では、非ゼロ初期条件ですべてのタイプのモデルをシミュレーションし、非線形の同定されたモデルをシミュレーションすることもできます。(同定されたモデルを使用するには、System Identification Toolbox™ ソフトウェアが必要です。)

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

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

ライン スタイル、マーカー、色。記号を含む文字ベクトルまたは string として指定します。記号が表示される順序は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定した場合、プロットはラインなしでマーカーのみを表示します。

例: '--or' は円形マーカー付きの赤い破線

ライン スタイル説明
-実線
--破線
:点線
-.一点鎖線
マーカー説明
'o'
'+'プラス記号
'*'アスタリスク
'.'
'x'x 印
'_'水平線
'|'垂直線
's'正方形
'd'菱形
'^'上向き三角形
'v'下向き三角形
'>'右向き三角形
'<'左向き三角形
'p'星形五角形
'h'星形六角形
説明

y

黄色

m

マゼンタ

c

シアン

r

g

b

w

k

入力信号シミュレーション。単入力システムの場合はベクトル、多入力システムの場合は配列として指定します。

  • 単入力システムの場合、ut と同じ長さのベクトルです。

  • 多入力システムの場合、u は、時間サンプル (length(t)) と同じ行数および sys に対する入力と同じ列数をもつ配列です。つまり、各行 u(i,:) は、時間 t(i) における sys の入力に適用された値を表します。各列 u(:,j) は、sysj 番目の入力に適用された信号です。

応答を計算する時間サンプル。0:dT:Tf 形式のベクトルとして指定します。lsimplot コマンドでは、t はモデル sysTimeUnit プロパティで指定された単位を使用するものと解釈します。時間ベクトルは、実数で有限でなければなりません。また、単調増加で等間隔の時間サンプルを含まなければなりません。

連続時間システムの場合、lsimplot コマンドはタイム ステップ dT を使用してモデルを離散化します。dT がシステム ダイナミクスに対して大きすぎる (アンダーサンプリング) 場合、lsimplot は、サンプリング時間の短縮を推奨する警告を出します。

離散時間システムの場合、タイム ステップ dTsys のサンプル時間と等しくなければなりません。または、t を省略するか、[] に設定できます。その場合、lsimplott を、sys.Ts と同じタイム ステップで 0 から始まる u と同じ長さのベクトルに設定します。

連続時間モデルをサンプリングするための離散化手法。次のいずれかとして指定します。

  • 'zoh' — ゼロ次ホールド

  • 'foh' — 1 次ホールド

sys が連続時間モデルの場合、lsimplot は、t のタイム ステップ dT = t(2)-t(1) と等しいサンプル時間を使用してモデルを離散化することで、時間応答を計算します。離散化手法を指定しない場合、lsimplot は、信号 u の滑らかさに基づいて自動的に方式を選択します。離散化手法の詳細については、連続/離散の変換方法を参照してください。

状態空間モデルをシミュレーションするための初期状態値。sys の状態ごとに 1 つの値をもつベクトルとして指定します。この引数を省略すると、lsim はすべての状態を t = 0 の 0 に設定します。

ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定せず、現在の座標軸が直交座標軸の場合、stepplot は現在の座標軸上でプロットします。ステップ プロットの作成時に AX を使用して特定の座標軸にプロットします。

ステップ プロットのオプション セット。TimePlotOptions オブジェクトとして指定します。このオプション セットを使用してステップ プロットの外観をカスタマイズできます。timeoptions を使用して、オプション セットを作成します。plotoptions に指定する設定は、stepplot を実行する MATLAB セッションの基本設定をオーバーライドします。したがって、ローカルの基本設定にかかわらず、同じ外観の複数のプロットを生成するスクリプトを記述する場合、plotoptions が有用です。

利用可能なオプションのリストについては、timeoptions を参照してください。

出力引数

すべて折りたたむ

プロット ハンドル。handle オブジェクトとして返されます。getoptions および setoptions を使用してシミュレーションされた応答プロットのプロパティを取得および設定するには、ハンドル h を使用します。利用可能なオプションのリストについては、コマンド ラインからの応答プロットのカスタマイズ"プロパティと値のリファレンス" の節を参照してください。

バージョン履歴

R2006a より前に導入