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

getValue

一般化モデルの現在の値

構文

curval = getValue(M)
curval = getValue(M,blockvalues)
curval = getValue(M,Mref)

説明

curval = getValue(M) は、一般化 LTI モデルまたは一般化行列 M の現在値 curval を返します。現在値は、M 内の制御設計ブロックをすべてその現在の値に置き換えることで取得されます。(不確かさをもつブロックについては、「現在の値」がブロックのノミナル値です。)

curval = getValue(M,blockvalues) は構造体 blockvalues に指定されたブロック値を使って現在値を計算します。blockvalues のフィールド名と値は、ブロック名とそれに対応する値を指定します。blockvalues に指定されていない M のブロックはその現在の値で置き換えられます。

curval = getValue(M,Mref) は一般化モデル Mref からブロック値を継承します。この構文は、curval = getValue(M,Mref.Blocks) と等価です。この構文を使用し、他の場所で計算されたブロック値 (たとえば systunelooptune、Robust Control Toolbox™ コマンド hinfstruct などの調整コマンドで取得した調整された値) を使用して M の現在の値を評価します。

入力引数

M

一般化 LTI モデルまたは一般化行列

blockvalues

置き換えのために M のブロックを指定している構造体と、それらのブロックを置き換える値。

blockvalues のフィールド名は M の制御設計ブロックの名前と一致します。このフィールド値を使って M の対応するブロックの置換値を指定します。フィールド値には、数値、動的システム モデル、静的モデルを使用できます。フィールド値が制御設計ブロックまたは一般化 LTI モデルの場合、それらのモデルの現在値は curval を計算するために使用されます。

Mref

一般化 LTI モデルMref を指定した場合、getValueM にあるブロックに名前が一致する Mref のブロックの現在の値を使用して curval を計算します。

出力引数

curval

M の現在値を表す数値配列または数値 LTI モデル

M の指定された制御設計ブロックの置換値を指定しない場合、getValue はそのブロックの現在の値を使用します。

モデルのブロックの指定された値に対するモデルの評価

この例は、getValue を使用して一般化 LTI モデルにある制御設計ブロックを指定の置換値に置き換える方法を示します。

次の閉ループ システムを検討します。

次のコードは、G(s)=(s1)(s+1)3 と調整可能な PI コントローラー C でこのシステムの genss モデルを作成します。

G = zpk(1,[-1,-1,-1],1);
C = tunablePID('C','pi');
Try = feedback(G*C,1)

genss モデル Try には 1 つの制御設計ブロック C があります。ブロック C は既定値に初期化され、モデル Try には C の現在の値に従って現在の値があります。getValue を使用して現在の値を確認するために CTry を評価します。

  1. C を評価して現在の値を取得します。

    Cnow = getValue(C)

    このコマンドでは、係数が C の調整可能なパラメーターの現在の値を反映する数値の pid オブジェクトが返されます。

  2. Try を評価して現在の値を取得します。

    Tnow = getValue(Try)

    このコマンドは feedback(G*Cnow,1) と等価である数値モデルを返します。

調整されたモデルとブロックの値へのアクセス

getValue を使用して、ブロック値に加えた変更を 1 つのモデルから別のモデルへ伝播します。

この手法は、systunelooptunehinfstruct などの調整コマンドで調整されたモデルやブロックの値にアクセスするときに便利です。たとえば、2 つの調整可能なブロック C1C2 がある制御システム T0 の閉ループ モデルがある場合、次を使用してこれを調整できます。

[T,fSoft] = systune(T0,SoftReqs);

次に、C1C2 の調整された値、および C1C2 に依存する閉ループ モデル H に次を使用してアクセスします。

C1t = getValue(C1,T);
C2t = getValue(C2,T);
Ht = getValue(H,T);

R2011b で導入