getStateIndex
操作点の仕様の状態要素のインデックスを取得
説明
操作点の仕様の States プロパティは、各モデル状態の平衡化仕様を含む配列です。Simulink® モデルのカスタマイズされた平衡化のためにマッピング関数を定義する場合、getStateIndex を使用して、対応するブロック パスまたは状態名に基づいて状態仕様のインデックスを取得できます。
最適化ベースの探索を使用して Simulink モデルを平衡化する場合、一部のアプリケーションでは最適化探索のパラメーターの定義においてさらに柔軟性が必要となります。そのようなシステムには、カスタム制約およびカスタム目的関数を指定できます。複雑なモデルの場合、マッピングを定義してモデルの状態、入力、および出力の部分集合を選択し、カスタムの制約および目的関数に渡すことができます。詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。
例
Simulink モデルを開きます。
mdl = 'scdindex1';
open_system(mdl)

モデルに操作点の仕様を作成します。
opspec = operspec(mdl);
opspec にはモデルの状態仕様の配列が含まれます。
opspec.States
ans =
x Known SteadyState Min Max dxMin dxMax
___________ ___________ ___________ ___________ ___________ ___________ ___________
(1.) scdindex1/system1
0 false true -Inf Inf -Inf Inf
0 false true -Inf Inf -Inf Inf
0 false true -Inf Inf -Inf Inf
(2.) scdindex1/system2
0 false true -Inf Inf -Inf Inf
system2 ブロックに対応する状態仕様のインデックスを取得します。
index2 = getStateIndex(opspec,'scdindex1/system2')
index2 =
2 1
index2(1) は、opspec.States 内での system2 の状態仕様オブジェクトのインデックスです。このブロックは単一の状態をもつので、index2 は 1 つの行をもち、index2(2) は 1 です。
ブロックに複数の状態がある場合、対応する状態仕様のすべての状態のインデックスを取得できます。
index1 = getStateIndex(opspec,'scdindex1/system1')
index1 =
1 1
1 2
1 3
index1 の各行には system2 ブロック内の 1 つの状態のインデックスが含まれます。各行の最初の列には、opspec.States 内の状態仕様のインデックスが含まれます。2 列目には仕様内での各状態要素のインデックスが含まれます。
Simulink モデルを開きます。
mdl = 'scdindex1';
open_system(mdl)

モデルに操作点の仕様を作成します。
opspec = operspec(mdl);
ブロックに複数の状態がある場合、要素インデックスを指定することで、対応する状態仕様内の特定の状態のインデックスを取得できます。たとえば、system1 ブロックの仕様内にある 2 番目の状態のインデックスを取得します。
index1 = getStateIndex(opspec,'scdindex1/system1',2)
index1 =
1 2
要素インデックスをベクトルとして指定して、ブロックの状態のサブセットのインデックスを取得することもできます。たとえば、system1 ブロックの仕様内にある 1 番目と 3 番目の状態のインデックスを取得します。
index2 = getStateIndex(opspec,'scdindex1/system1',[1 3])
index2 =
1 1
1 3
Simulink モデルを開きます。
mdl = 'scdindex2';
open_system(mdl)

system1 ブロックは、position、velocity、acceleration という名前付きの 3 状態をもつ状態空間システムです。
モデルに操作点の仕様を作成します。
opspec = operspec(mdl);
操作点の仕様オブジェクトの States プロパティは、system1 にある名前付きの各状態につき 1 つのエントリを含んでいます。
opspec.States
ans =
x Known SteadyState Min Max dxMin dxMax
___________ ___________ ___________ ___________ ___________ ___________ ___________
(1.) position
0 false true -Inf Inf -Inf Inf
(2.) velocity
0 false true -Inf Inf -Inf Inf
(3.) acceleration
0 false true -Inf Inf -Inf Inf
ブロック内の名前付きの状態に対応する状態仕様のインデックスを取得するには、状態名を指定します。
index1 = getStateIndex(opspec,'velocity')
index1 =
2 1
index1 の最初の列には、opspec.States プロパティ内の対応する状態仕様のインデックスが含まれます。2 列目は、名前付き状態の 1 です。
モデルを開きます。
mdl = "scdTanks_simscape";
open_system(mdl)

モデルに操作点の仕様を作成します。
opspec = operspec(mdl);
操作点の仕様オブジェクトの States プロパティは、モデル内の各 Simscape™ 状態につき 1 つの状態仕様を含んでいます。
Simscape 状態に対応する仕様のインデックスを取得するには、状態名を指定します。たとえば、Tank3 の圧力状態のインデックスを取得します。
idx = getStateIndex(opspec,"scdTanks_simscape.Tank3.p_I")
idx =
20 1
idx の最初の列には、opspec.States 内の対応する状態仕様のインデックスが含まれます。2 列目は Simscape 状態の 1 です。
opspec.States でのこの状態の仕様を表示します。
opspec.States(idx(1))
ans =
x Known SteadyState Min Max dxMin dxMax
___________ ___________ ___________ ___________ ___________ ___________ ___________
(1.) scdTanks_simscape.Tank3.p_I
1.0132 false true -Inf Inf -Inf Inf
入力引数
Simulink モデルの操作点の仕様または操作点。OperatingSpec、OperatingPoint、または OperatingReport オブジェクトとして指定します。
op の States プロパティ内で状態仕様に対応するブロック パスまたは状態名。次のいずれかのパスを含む文字ベクトルまたは string として指定します。
Simulink モデル内にある名前なしの状態を含むブロックのブロック パス。
Simulink ブロックまたは Simscape™ ブロック内にある名前付きの状態の名前。
状態仕様をもつすべての状態を表示するには、op の States プロパティを表示します。
op.States
状態要素のインデックス。name で指定されたブロックまたは状態内にある状態要素の数以下の正の整数、またはそのような整数のベクトルとして指定します。既定では、element を指定しない場合、getStateIndex は選択された状態仕様のすべての要素のインデックスを返します。例については、操作点の仕様の指定された状態要素のインデックスの取得を参照してください。
出力引数
状態インデックス。element が整数の場合は 2 要素の行ベクトル、element がベクトルの場合は 2 列の配列として返されます。index の各行には単一のモデル状態のインデックスが含まれます。
index の最初の列には、op の States プロパティ内の対応する状態仕様のインデックスが含まれます。2 列目には状態仕様内での要素インデックスが含まれます。
index を使用して、Simulink モデルのカスタマイズされた平衡化のためのカスタム マッピングの状態部分を指定できます。詳細については、operspec の CustomMappingFcn プロパティを参照してください。
バージョン履歴
R2017a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)