Main Content

sampleBlock

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

説明

Msamp = sampleBlock(M,name,vals) は 1 つの制御設計ブロックを一般化モデル M でサンプリングします。結果の Msamp はブロックを指定した値に置き換えることで取得した、サイズ [size(M) N] のモデル配列になります。ここで Nvals 内の値の数です。

Msamp = sampleBlock(M,nameset,valset) はブロック名の cell 配列として指定された複数のブロックを同時にサンプリングします。valset は各ブロックの N サンプル値の cell 配列です。結果の Msamp はサイズが [size(M) N] のモデル配列です。

Msamp = sampleBlock(M,nameset1,valset1,nameset2,valset2,...,namesetM,valsetM) は複数のブロックを個別にサンプリングします。nameset1,nameset2,...,namesetM はそれぞれ単一のブロック名 (name を参照) または名前の cell 配列 (nameset を参照) にすることができます。モデル M はサイズ [N1 N2 ... NM] のグリッド上でサンプリングされます。ここで N1valset1 内の値の数、N2valset2 内の値の数などになります。結果の Msamp はサイズが [size(M) N1 N2 ... NM] の配列です。

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

すべて折りたたむ

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

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

τ = 3,4,..,7 に対しこの伝達関数を評価します。結果は 1 次モデルの 5 行 1 列の配列です。

Gs = sampleBlock(G,'tau',3:7);
size(Gs)
5x1 array of state-space models.
Each model has 1 outputs, 1 inputs, and 1 states.

s = a の極と b*c のゲインをもつモデルを作成します。ここで ab および c は調整可能なスカラーです。

a = realp('a',1);  
b = realp('b',3);  
c = realp('c',1);
G = tf(b*c,[1 a]);

a のサンプルを 5 個、(b,c) のペアのサンプルを 3 個選択します。(a,b,c) の組み合わせからなる対応する 5 行 3 列のグリッドで G を評価します。

as = 0.8:0.1:1.2;
bs = 2:4;
cs = [0.5 1 1.5];
Gs = sampleBlock(G,'a',as,{'b','c'},{bs,cs});

cell 配列で bc の値をグループ化すると、それらは sampleBlock によって (b,c) のペア、(2,0.5)、(3,1)、(1,5) として処理されます。Gs は状態空間モデルの 5 行 3 列の配列であり、a は最初の次元に沿って変化し、(b,c) は 2 番目の次元に沿って変化します。このため、たとえば Gs(:,:,3,2)a = 1、(b,c) = (3,1) に対応します。

ステップ プロットには、3 つの (b,c) のペアそれぞれに対する一連の応答が表示されます。各セットには 5 つの a 値それぞれに対する応答が含まれます。

stepplot(Gs)

値をグループ化しない場合、sampleBlock はすべての値を個別に置換し、結果として 5 x 3 x 3 のモデル配列になります。

GsInd = sampleBlock(G,'a',as,'b',bs,'c',cs);
size(GsInd)
5x3x3 array of state-space models.
Each model has 1 outputs, 1 inputs, and 1 states.

たとえば GsInd では、Gs(:,:,3,2,1)a = 1、b = 3、c = 0.5 のモデルになります。

入力引数

すべて折りたたむ

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

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

  • 一般化行列 (genmat)

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

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

サンプリングする制御設計ブロック。文字ベクトルとして指定します。たとえば、M が調整可能なブロック t1 および t2 をもつ genss モデルであると仮定します。その場合、't1' または 't2' のいずれかが name が取りうる値になります。

サンプル ブロック値。数値配列またはモデル配列として指定します。値はブロック タイプと互換性がなければなりません。たとえば、name が調整可能な実数パラメーター (realp) の場合、vals はサンプルの数である長さ N の数値配列になります。name が調整可能な PID コントローラー (tunablePID) の場合、vals は PID 構造体と互換性のある LTI モデルの配列になります。

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

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

t1s = 1:10;
u2s = 2:2:20;
valset = {t1s,t2s};
Msamp = sampleBlock(M,{'t1','u2'},valset);

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

サンプル ブロック値。cell 配列として指定します。cell 配列内の各エントリは、それ自体が nameset 内の各ブロックの N サンプル値の配列です。たとえば、次のコードはモデル M(t1,u2) のペア (1,2)、(2,4)、... (10,20) でサンプリングします。

t1s = 1:10;
u2s = 2:2:20;
valset = {t1s,t2s};
Msamp = sampleBlock(M,{'t1','u2'},valset);

valset 内の値は対応するブロック タイプと互換性がなければなりません。

出力引数

すべて折りたたむ

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

Msamp1 = sampleBlock(M,'u1',1:10);

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

Msamp2 = sampleBlock(M,{'u1','u2'},{1:10,2:20});

ブロックのサンプル値。構造体として返されます。samples のフィールドはサンプリングされたブロックの名前です。この値は、Msamp にエントリを生成するために使用した対応する値が含まれる配列です。

バージョン履歴

R2016a で導入