このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
です。
操作点の仕様からの Simscape 状態のインデックスの取得
モデルを開きます。
mdl = 'scdTanks_simscape';
open_system(mdl)
モデルに操作点の仕様を作成します。
opspec = operspec(mdl);
操作点の仕様オブジェクトの States
プロパティは、モデル内の各 Simscape 状態につき 1 つの状態仕様を含んでいます。
Simscape 状態に対応する仕様のインデックスを取得するには、状態名を指定します。たとえば、Tank3 の圧力状態のインデックスを取得します。
idx = getStateIndex(opspec,'scdTanks_simscape.Tank3.pressure')
idx = 18 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.pressure 0 false true -Inf Inf -Inf Inf
入力引数
op
— 操作点の仕様または操作点
OperatingSpec
オブジェクト | OperatingPoint
オブジェクト | OperatingReport
オブジェクト
Simulink モデルの操作点の仕様または操作点。OperatingSpec
、OperatingPoint
、または OperatingReport
オブジェクトとして指定します。
name
— ブロック パスまたは状態名
文字ベクトル | string
op
の States
プロパティ内で状態仕様に対応するブロック パスまたは状態名。次のいずれかのパスを含む文字ベクトルまたは string として指定します。
Simulink モデル内にある名前なしの状態を含むブロックのブロック パス。
Simulink ブロックまたは Simscape™ ブロック内にある名前付きの状態の名前。
状態仕様をもつすべての状態を表示するには、op
の States
プロパティを表示します。
op.States
element
— 状態要素のインデックス
正の整数 | 正の整数のベクトル
状態要素のインデックス。name
で指定されたブロックまたは状態内にある状態要素の数以下の正の整数、またはそのような整数のベクトルとして指定します。既定では、element
を指定しない場合、getStateIndex
は選択された状態仕様のすべての要素のインデックスを返します。例については、操作点の仕様の指定された状態要素のインデックスの取得を参照してください。
出力引数
index
— 状態インデックス
2 要素の行ベクトル | 2 列の配列
状態インデックス。element
が整数の場合は 2 要素の行ベクトル、element
がベクトルの場合は 2 列の配列として返されます。index
の各行には単一のモデル状態のインデックスが含まれます。
index
の最初の列には、op
の States
プロパティ内の対応する状態仕様のインデックスが含まれます。2 列目には状態仕様内での要素インデックスが含まれます。
index
を使用して、Simulink モデルのカスタマイズされた平衡化のためのカスタム マッピングの状態部分を指定できます。詳細については、operspec
の CustomMappingFcn
プロパティを参照してください。
バージョン履歴
R2017a で導入
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)