Main Content

rsampleBlock

一般化モデルでの制御設計ブロックのランダムなサンプリング

説明

Msamp = rsampleBlock(M,names,N)一般化モデル M で制御設計ブロックのサブセットをランダムにサンプリングします。names 引数はサンプリングするブロックを指定し、N は取得するサンプル数を指定します。結果の Msamp は、サンプリングされたブロックをランダム化した値に置き換えることで取得した、サイズが [size(M) N] のモデル配列です。

Msamp = rsampleBlock(M,names1,N1,names2,N2,...,namesM,NM) は、names1 にリストされたブロックの N1 サンプル、names2 にリストされたブロックの N2 サンプルなどを取ります。結果の Msamp はサイズが [size(M) N1 N2 ... NM] のモデル配列です。

また、[Msamp,samples] = rsampleBlock(___) は各サンプリング点のブロック置換値が含まれるデータ構造体を返します。この構文は前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

1 次モデル G(s)=1/(τs+1) を作成します。ここで、τ は調整可能な実数パラメーターです。

tau = realp('tau',5);
G = tf(1,[tau 1]);

tau を非負の値のみに制限します。

G.Blocks.tau.Minimum = 0;

G のランダムなサンプルを 20 個生成します。結果は tau の範囲から取得した乱数値の tau をもつ 1 次モデルの、20 行 1 列の配列になります。

Gs = rsampleBlock(G,'tau',20);
size(Gs)
20x1 array of state-space models.
Each model has 1 outputs, 1 inputs, and 1 states.

調整可能なブロックと不確かさをもつブロックの両方が含まれるモデルのサンプルをランダムに取得します。不確かさをもつブロックを使用する場合、Robust Control Toolbox™ が必要になります。調整可能なブロックのランダムなサンプリングは、この例に示す場合と同様に機能します。

G(s)=a/(τs+1) の不確かさをもつモデルを作成します。ここで、a は区間 [3,5] で変化する不確かさをもつパラメーターで、τ = 0.5 +/- 30% です。また、調整可能な PI コントローラーを作成し、調整可能なコントローラーと不確かさをもつシステムから閉ループ システムを形成します。

a = ureal('a',4);
tau = ureal('tau',.5,'Percentage',30);
G = tf(a,[tau 1]);
C = tunablePID('C','pi');
T = feedback(G*C,1);

T は、不確かさをもつ 2 つのブロック a および tau と、調整可能な 1 つのブロック C をもつ一般化状態空間モデルです。T を 20 個のランダムな (a,tau) のペアでサンプリングします。

[Ts,samples] = rsampleBlock(T,{'a','tau'},20);

Tsgenss モデルの 20 行 1 列の配列です。調整可能なブロック C はサンプリングされず、Ts に保持されます。構造体 samples にはフィールド samples.a とフィールド samples.tau があり、これらのブロックがサンプリングされる値が含まれます。

atau を cell 配列にグループ化すると、rsampleBlock によって (a,tau) のペアとして一緒にサンプリングされます。ブロックを個別にサンプリングすると、高次の配列が生成されます。たとえば、a のランダム サンプルを 10 個、tau のサンプルを 5 個個別に取得すると、10 行 5 列のモデル配列が生成されます。

[TsInd,samples] = rsampleBlock(T,'a',10,'tau',5);
TsInd
10x5 array of generalized continuous-time state-space models.
Each model has 1 outputs, 1 inputs, 2 states, and the following blocks:
  C: Tunable PID controller, 1 occurrences.

Type "ss(TsInd)" to see the current value and "TsInd.Blocks" to interact with the blocks.

この配列では、a は 1 つの次元に沿って変化し、tau はもう一方に沿って変化します。

入力引数

すべて折りたたむ

サンプリングするモデル。次のように指定します。

  • 一般化モデル (genss または genfrd)

  • 一般化行列 (genmat)

  • 不確かさをもつモデル (uss (Robust Control Toolbox) または ufrd (Robust Control Toolbox))

  • 不確かさをもつ行列 (umat (Robust Control Toolbox))

サンプリングする制御設計ブロック。文字ベクトルまたは文字ベクトルの cell 配列として指定します。names 内のエントリは、少なくとも M 内の制御設計ブロックのサブセットの名前に対応します。たとえば、M が、調整可能なブロック t1 および t2、不確かさをもつブロック u1 および u2 を含む genss モデルであると仮定します。その場合、{'t1','u2'}names が取りうる 1 つの値です。

cell 配列内でブロック名をまとめてグループ化すると、各ブロックの個々のサンプルではなく、グループのサンプルが生成されます。たとえば、次のコードはモデルの 10 行 1 列の配列を生成します。この配列の各エントリには (t1,u2) の組の乱数値が含まれます。

Msamp = rsampleBlock(M,{'t1','u2'},10);

パラメーターを個々にサンプリングする場合は、グループ化しないでください。たとえば、次のコードはモデルの 10 行 20 列の配列を生成します。t1 は最初の次元で変化し、u2 は 2 番目の次元で変化します。

Msamp = rsampleBlock(M,'t1',10,'u2',20);

rsampleBlockM に表示されない names 内のエントリを無視します。

前のブロックについて取るべきサンプル数。正の整数として指定します。

出力引数

すべて折りたたむ

モデルのサンプルの配列。一般化モデル配列、ss 配列、frd 配列または数値配列として返されます。すべてのブロックがサンプリングされない限り、MsampM と同じタイプです。この場合、Msamp は数値配列、ss 配列または frd 配列です。たとえば、M が不確かさをもつブロック u1u2 をもつ uss モデルであると仮定します。以下のコマンドは不確かさをもつブロック u2 をもつ uss モデルの配列を返します。

Msamp1 = rsampleBlock(M,'u1',10);

以下のコマンドは両方のブロックをサンプリングし、ss モデルの配列を返します。

Msamp2 = rsampleBlock(M,{'u1','u2'},10);

rsampleBlock は不確かさをもつブロックをサンプリングする場合は不確かさの範囲に含まれる値を使用し、調整可能なブロックをサンプリングする場合は最大パラメーター値および最小パラメーター値の間の値を使用します。

ブロックのサンプル値。構造体として返されます。samples のフィールドはサンプリングされたブロックの名前です。この値は、Msamp にエントリを生成するために使用した対応する乱数値が含まれる配列です。たとえば、以下のコマンドを実行するとします。ここで M は調整可能なブロック t1t2 を含む genss モデルです。

[Msamp,samples] = rsampleBlock(M,{'t1','t2'},10);

次に、samples.t1 には t1 の値が 10 個含まれ、samples.t2 には t2 の値が 10 個含まれます。スカラー値でないブロックをサンプリングする場合、samples の対応するフィールドにはブロックと互換性のある値が含まれます。たとえば、tunablePID ブロックをサンプリングする場合、samples には PID コントローラーを表す状態空間モデルの配列が含まれます。

バージョン履歴

R2016a で導入

参考

| | | | | (Robust Control Toolbox)

トピック