getValue
一般化モデルの現在の値
構文
curval = getValue(M)
curval = getValue(M,blockvalues)
curval = getValue(M,Mref)
説明
は、一般化 LTI モデルまたは一般化行列 curval
= getValue(M
)M
の現在値 curval
を返します。現在値は、M
内の制御設計ブロックをすべてその現在の値に置き換えることで取得されます。(不確かさをもつブロックについては、「現在の値」がブロックのノミナル値です。)
は構造体 curval
= getValue(M
,blockvalues
)blockvalues
に指定されたブロック値を使って現在値を計算します。blockvalues
のフィールド名と値は、ブロック名とそれに対応する値を指定します。blockvalues
に指定されていない M
のブロックはその現在の値で置き換えられます。
は一般化モデル curval
= getValue(M
,Mref
)Mref
からブロック値を継承します。この構文は、curval
= getValue(M
,Mref.Blocks
) と等価です。この構文を使用し、他の場所で計算されたブロック値 (たとえば systune
、looptune
、Robust Control Toolbox™ コマンド hinfstruct
(Robust Control Toolbox) などの調整コマンドで取得した調整された値) を使用して M
の現在の値を評価します。
入力引数
|
一般化 LTI モデルまたは一般化行列。 |
|
置き換えのために
|
|
一般化 LTI モデル。 |
出力引数
|
|
例
モデルのブロックの指定された値に対するモデルの評価
この例は、getValue
を使用して一般化 LTI モデルにある制御設計ブロックを指定の置換値に置き換える方法を示します。
次の閉ループ システムを検討します。
次のコードは、 と調整可能な 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
を使用して現在の値を確認するために C
と Try
を評価します。
C
を評価して現在の値を取得します。Cnow = getValue(C)
このコマンドでは、係数が
C
の調整可能なパラメーターの現在の値を反映する数値のpid
オブジェクトが返されます。Try
を評価して現在の値を取得します。Tnow = getValue(Try)
このコマンドは
feedback(G*Cnow,1)
と等価である数値モデルを返します。
調整されたモデルとブロックの値へのアクセス
getValue
を使用して、ブロック値に加えた変更を 1 つのモデルから別のモデルへ伝播します。
この手法は、systune
、looptune
、hinfstruct
(Robust Control Toolbox) などの調整コマンドで調整されたモデルやブロックの値にアクセスするときに便利です。たとえば、2 つの調整可能なブロック C1
と C2
がある制御システム T0
の閉ループ モデルがある場合、次を使用してこれを調整できます。
[T,fSoft] = systune(T0,SoftReqs);
次に、C1
と C2
の調整された値、および C1
と C2
に依存する閉ループ モデル H
に次を使用してアクセスします。
C1t = getValue(C1,T); C2t = getValue(C2,T); Ht = getValue(H,T);
バージョン履歴
R2011b で導入
参考
genss
| replaceBlock
| systune
| looptune
| hinfstruct
(Robust Control Toolbox)