ドキュメンテーション

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

replaceBlock

一般化 LTI モデルの Control Design ブロックの置換または更新

構文

Mnew = replaceBlock(M,Block1,Value1,...,BlockN,ValueN)
Mnew = replaceBlock(M,blockvalues)
Mnew = replaceBlock(...,mode)

説明

Mnew = replaceBlock(M,Block1,Value1,...,BlockN,ValueN) は、指定された値 Value1,...,ValueNM「Control Design ブロック」 Block1,...,BlockN を置き換えます。M「一般化 LTI モデル」または「一般化行列」です。

Mnew = replaceBlock(M,blockvalues) は、構造体 blockvalues のフィールド名と値としてブロック名と置換値を指定します。

Mnew = replaceBlock(...,mode) は、文字列 mode で指定された代入モードを使ってモデル M の配列に対してブロックの置き換えを実行します。

入力引数

M

「一般化 LTI モデル」「一般化行列」、またはそのようなモデルの配列。

Block1,...,BlockN

M「Control Design ブロック」の名前。replaceBlock コマンドは、提供される対応する値 Value1,...,ValueNM のリストされているそれぞれのブロックを置き換えます。

指定された BlockM のブロックではない場合、そのブロックと対応する値に対して replaceBlock します。

Value1,...,ValueN

対応するブロック Block1,...,BlockN の置換値。

ブロックの置換値は、異なる Control Design ブロック、数値行列、LTI モデルなど、ブロックのサイズと互換性のある任意の値にすることができます。いずれかの値が [] である場合、対応するブロックはそのノミナル (現在の) 値に置き換えられます。

blockvalues

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

blockvalues のフィールド名は M の Control Design ブロックの名前と一致します。このフィールド値を使って M の対応するブロックの置換値を指定します。置換値は、数値、数値 LTI モデル、Control Design ブロック、一般化 LTI モデルのいずれかです。

mode

一般化行列または LTI モデルの入力配列 M に対するブロック置換モードを指定する文字列。

mode は次の値をとることができます。

  • '-once' (既定値) — モデル配列 M にわたってブロックの置換をベクトル化します。それぞれのブロックは単一の値で置き換えられますが、その値は配列にわたってモデル間で変わる可能性があります。

    ベクトル化されたブロック置換の場合、入力 blockvalues 用の構造体配列または Value1,...,ValueN 入力用のセル配列を使用します。たとえば、M がモデルの 2 行 3 列の配列である場合、次のようになります。

    • Mnew = replaceBlock(M,blockvalues,'-once')、ここで blockvalues は 2 行 3 列の構造体配列であり、配列内の各モデル M(:,:,k) に対してブロック値 blockvalues(k) の 1 セットを指定します。

    • Mnew = replaceBlock(M,Block,Value,'-once')、ここで Value は 2 行 3 列のセル配列であり、配列内のモデル M(:,:,k) 内の Value{k}Block を置き換えます。

  • '-batch' — バッチでのブロックの置換。それぞれのブロックは値の配列によって置き換えられ、値の同じ配列が M 内の各モデルに使用されます。その結果として生じるモデルの配列 Mnew のサイズは [size(M) Asize] になり、このとき、Asize は置換値のサイズを指します。

入力 M は単一のモデルであり、'-once' および '-batch' は同一の結果を返します。

既定値: '-once'

出力引数

Mnew

指定されたブロックが指定された置換値によって置き換えられる行列、線形モデル、または行列。

Mnew は、指定されたすべての置換値が数値または数値 LTI モデルのときに、数値配列または数値 LTI モデルになります。

数値による Control Design ブロックの置き換え

この例は、ゲインのみ、数値 PI コントローラー、または調整可能なコントローラーの現在の値によって一般化 LTI モデルで調整可能な PID コントローラー (ltiblock.pid) を置き換える方法を示します。

  1. 次のシステムの一般化 LTI モデルを作成します。

    ここでプラント G(s)=(s1)(s+1)3、および C は調整可能な PID コントローラーです。

    G = zpk(1,[-1,-1,-1],1);
    C = ltiblock.pid('C','pid');
    Try = feedback(G*C,1)
  2. C をゲインのみの 5 で置き換えます。

    T1 = replaceBlock(Try,'C',5);

    T1feedback(G*5,1) と等価の ss モデルです。

  3. 5 の比例ゲインおよび 0.1 の積分ゲインのある PI コントローラーによって C を置き換えます。

    C2 = pid(5,0.1);
    T2 = replaceBlock(Try,'C',C2);

    T2feedback(G*C2,1) と等価の ss モデルです。

  4. 現在の (ノミナル) 値によって C を置き換えます。

    T3 = replaceBlock(Try,'C',[]);

    T3 は、CgetValue(C) によって置き換えられている ss モデルです。

パラメーター値の行列に対するパラメトリック モデルのサンプル化

この例は、replaceBlock を使用してパラメーター値のグリッドにわたって 2 次フィルターのパラメトリック モデルをサンプル化する方法を示します。

  1. 2 次フィルターの調整可能な (パラメトリック) モデルを作成します。

    F(s)=ωn2s2+2ζωns+ωn2,

    ここで、減衰 ζ と固有振動数 ωn はパラメーターです。

    wn = realp('wn',3);
    zeta = realp('zeta',0.8);
    F = tf(wn^2,[1 2*zeta*wn wn^2])
    F =
    
      Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
        wn: Scalar parameter, 5 occurrences.
        zeta: Scalar parameter, 1 occurrences.
    
    Type "ss(F)" to see the current value, "get(F)" to see all properties, and "F.Blocks" to interact with the blocks.
    

    F は、2 つの調整可能な Control Design ブロックである、realp ブロックの wn および zeta をもつ genss モデルです。ブロック wn および zeta には、それぞれ 3 および 0.8 の初期値があります。

  2. (wn,zeta) の値の 2x3 グリッドに対して F をサンプル化します。

    wnvals = [3;5];
    zetavals = [0.6 0.8 1.0];
    Fsample = replaceBlock(F,'wn',wnvals,'zeta',zetavals);

    Fsample は状態空間モデルの 2 x 3 配列です。配列の各エントリは、対応する (wn,zeta) ペアの伝達関数です。

  3. Fsample のステップ応答をプロットします。

    step(Fsample)

    ステップ応答のプロットは、配列 Fsample 内の 6 つのモデルにわたる固有振動数と減衰定数の変動を示しています。

  4. モデル配列の SamplingGrid プロパティを設定して、どのパラメーター値のセットが配列のどのエントリに対応するかの追跡に役立てることができます。これを行うには、配列の次元と一致するパラメーター値のグリッドを作成します。次に、これらの値をパラメーター名と共に Fsample.SamplingGrid に代入します。

    [wngrid,zetagrid] = ndgrid(wnvals,zetavals);
    Fsample.SamplingGrid = struct('wn',wngrid,'zeta',zetagrid);

    H を表示すると、Fsample.SamplingGrid のパラメーター値が配列の各伝達関数と共に表示されます。

詳細

すべて展開する

ヒント

  • replaceBlock を使用して、一般化 LTI モデルをパラメーターのグリッドにわたってサンプリングすることでパラメーターの調査を実行したり、調整可能なブロックの具体的な値に対して調整可能なモデルを評価したりすることができます。「」を参照してください。

この情報は役に立ちましたか?