このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
rsampleBlock
一般化モデルでの制御設計ブロックのランダムなサンプリング
構文
説明
例
調整可能なモデルでのパラメーターのランダムなサンプリング
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™ が必要になります。調整可能なブロックのランダムなサンプリングは、この例に示す場合と同様に機能します。
の不確かさをもつモデルを作成します。ここで、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);
Ts
は genss
モデルの 20 行 1 列の配列です。調整可能なブロック C
はサンプリングされず、Ts
に保持されます。構造体 samples
にはフィールド samples.a
とフィールド samples.tau
があり、これらのブロックがサンプリングされる値が含まれます。
a
と tau
を cell 配列にグループ化すると、rsampleBlock
によって (a,tau)
のペアとして一緒にサンプリングされます。ブロックを個別にサンプリングすると、高次の配列が生成されます。たとえば、a
のランダム サンプルを 10 個、tau
のサンプルを 5 個個別に取得すると、10 行 5 列のモデル配列が生成されます。
[TsInd,samples] = rsampleBlock(T,'a',10,'tau',5); TsInd
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, "get(TsInd)" to see all properties, and "TsInd.Blocks" to interact with the blocks.
この配列では、a
は 1 つの次元に沿って変化し、tau
はもう一方に沿って変化します。
入力引数
names
— 制御設計ブロック
文字ベクトル | 文字ベクトルの cell 配列
サンプリングする制御設計ブロック。文字ベクトルまたは文字ベクトルの 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);
rsampleBlock
は M
に表示されない names
内のエントリを無視します。
N
— サンプル数
正の整数
前のブロックについて取るべきサンプル数。正の整数として指定します。
出力引数
Msamp
— モデルのサンプルの配列
一般化モデル配列 | ss
配列 | frd
配列 | 数値配列
モデルのサンプルの配列。一般化モデル配列、ss
配列、frd
配列または数値配列として返されます。すべてのブロックがサンプリングされない限り、Msamp
は M
と同じタイプです。この場合、Msamp
は数値配列、ss
配列または frd
配列です。たとえば、M
が不確かさをもつブロック u1
と u2
をもつ uss
モデルであると仮定します。以下のコマンドは不確かさをもつブロック u2
をもつ uss
モデルの配列を返します。
Msamp1 = rsampleBlock(M,'u1',10);
以下のコマンドは両方のブロックをサンプリングし、ss
モデルの配列を返します。
Msamp2 = rsampleBlock(M,{'u1','u2'},10);
rsampleBlock
は不確かさをもつブロックをサンプリングする場合は不確かさの範囲に含まれる値を使用し、調整可能なブロックをサンプリングする場合は最大パラメーター値および最小パラメーター値の間の値を使用します。
samples
— ブロックのサンプル値
構造体
ブロックのサンプル値。構造体として返されます。samples
のフィールドはサンプリングされたブロックの名前です。この値は、Msamp
にエントリを生成するために使用した対応する乱数値が含まれる配列です。たとえば、以下のコマンドを実行するとします。ここで M
は調整可能なブロック t1
と t2
を含む genss
モデルです。
[Msamp,samples] = rsampleBlock(M,{'t1','t2'},10);
次に、samples.t1
には t1
の値が 10 個含まれ、samples.t2
には t2
の値が 10 個含まれます。スカラー値でないブロックをサンプリングする場合、samples
の対応するフィールドにはブロックと互換性のある値が含まれます。たとえば、tunablePID
ブロックをサンプリングする場合、samples
には PID コントローラーを表す状態空間モデルの配列が含まれます。
バージョン履歴
R2016a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)