Main Content

getOutputIndex

操作点の仕様の出力要素のインデックスを取得

説明

操作点の仕様の Outputs プロパティは、各モデル出力の平衡化仕様を含む配列です。Simulink® モデルのカスタマイズされた平衡化のためにマッピング関数を定義する場合、getOutputIndex を使用して、対応するブロック パスに基づいて出力仕様のインデックスを取得できます。

最適化ベースの探索を使用して Simulink モデルを平衡化する場合、一部のアプリケーションでは最適化探索のパラメーターの定義においてさらに柔軟性が必要となります。そのようなシステムには、カスタム制約およびカスタム目的関数を指定できます。複雑なモデルの場合、マッピングを定義してモデルの状態、入力、および出力の部分集合を選択し、カスタムの制約および目的関数に渡すことができます。詳細については、カスタムの制約と目的関数を使用した操作点の計算を参照してください。

index = getOutputIndex(op,block) は、操作点の仕様 opOutputs プロパティ内で block に対応する出力仕様のインデックスを返します。

index = getOutputIndex(op,block,port) は、指定された block の指定された出力 port に追加される、平衡化出力制約に対応する出力仕様のインデックスを返します。

この構文は、opOutputs プロパティに、同じブロックから発生する複数の信号に対して平衡化出力制約が含まれる場合に使用します。

index = getOutputIndex(op,block,port,element) は、複数の要素をもつ出力の出力仕様内にある指定された element のインデックスを返します。

すべて折りたたむ

Simulink モデルを開きます。

mdl = 'scdindex1';
open_system(mdl)

モデルに操作点の仕様を作成します。

opspec = operspec(mdl);

opspec にはモデルの出力仕様の配列が含まれます。

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdindex1/Out1
    0    false    -Inf    Inf
(2.) scdindex1/Out2
    0    false    -Inf    Inf

Out2 の出力仕様のインデックスを取得します。

idx = getOutputIndex(opspec,'scdindex1/Out2')
idx =

     2     1

idx の最初の列には、opspec.Outputs 内の出力仕様のインデックスが含まれます。2 列目には出力仕様内での要素インデックスが含まれます。この場合、出力仕様には 1 つの要素のみが含まれます。

Simulink モデルを開きます。

mdl = 'scdplane';
open_system(mdl)

モデルに操作点の仕様を作成します。

opspec = operspec(mdl);

モデルのルートレベルの出力に加え、配列 opspec.Outputs には addoutputspec コマンドを使用して信号に追加された、トリム制約の仕様も含まれます。

Aircraft Dynamics Model ブロックの 2 番目の出力端子から発生する信号に出力仕様を追加します。

opspec = addoutputspec(opspec,'scdplane/Aircraft Dynamics Model',2);

opspec の出力配列を表示します。

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdplane/alpha (rad)
    0    false    -Inf    Inf
(2.) scdplane/Nz Pilot (g)
    0    false    -Inf    Inf
(3.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf

追加された出力仕様のインデックスを取得します。特定のブロックの出力端子のうち 1 つのみに出力仕様がある場合、端子番号を指定しなくても出力インデックスを取得できます。

index1 = getOutputIndex(opspec,'scdplane/Aircraft Dynamics Model')
index1 =

     3     1

同じブロックの最初の出力から発生する信号に出力仕様を追加します。

opspec = addoutputspec(opspec,'scdplane/Aircraft Dynamics Model',1);

opspec の出力配列を表示します。

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdplane/alpha (rad)
    0    false    -Inf    Inf
(2.) scdplane/Nz Pilot (g)
    0    false    -Inf    Inf
(3.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf
(4.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf

同じブロックに対応する出力仕様が 2 つになり、それぞれが各出力端子に対応しています。Aircraft Dynamics Model ブロックの出力端子 1 に対応する出力仕様のインデックスを取得します。

index2 = getOutputIndex(opspec,'scdplane/Aircraft Dynamics Model',1)
index2 =

     4     1

Simulink モデルを開きます。

mdl = 'scdtmp';
open_system(mdl)

モデルに操作点の仕様オブジェクトを作成します。

opspec = operspec(mdl);

opspec には、ベクトル信号である出力端子 Out1 の出力仕様が含まれます。

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdtmp/Out1
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf

Out1 のすべての要素のインデックスを取得します。

index1 = getOutputIndex(opspec,'scdtmp/Out1')
index1 =

     1     1
     1     2
     1     3
     1     4
     1     5
     1     6

index1 の各行には Out1 内のベクトル信号の 1 要素のインデックスが含まれます。最初の列は、opsepc.Outputs 内での Out1 端子の出力仕様オブジェクトのインデックスです。2 列目は出力仕様内での要素インデックスです。

出力仕様の個々の要素や、要素のサブセットのインデックスを取得することもできます。Out1 の要素番号 4 のインデックスを取得します。

index2 = getOutputIndex(opspec,'scdtmp/Out1',[],4)
index2 =

     1     4

Out1 の要素 2 と要素 3 のインデックスを取得します。

index3 = getOutputIndex(opspec,'scdtmp/Out1',[],[2 3])
index3 =

     1     2
     1     3

入力引数

すべて折りたたむ

Simulink モデルの操作点の仕様。OperatingSpec または OperatingReport として指定します。

opOutputs プロパティ内で出力仕様に対応するブロック パス。次のいずれかのパスを含む文字ベクトルまたは string として指定します。

  • モデルのルートレベルの出力。

  • 出力仕様が追加されたモデル内の信号のソース ブロック。モデルへの出力仕様の追加の詳細については、addoutputspec を参照してください。

出力仕様をもつすべてのブロックを表示するには、opOutputs プロパティを表示します。

op.Outputs

出力端子。[1,N] の範囲の整数として指定します。ここで N は、指定された block の出力端子の数です。block がルートレベルの出力端子である場合、N1 です。

port を指定せず、op の出力配列内に指定された block に対応するエントリが 1 つ存在する場合、port の既定値はそのエントリの端子番号になります。指定された block に対応するエントリが出力配列内に複数ある場合、port の既定値は最初のエントリの端子番号になります。例については、信号に追加された平衡化出力仕様のインデックスの取得を参照してください。

op の出力配列の i 番目のエントリの端子番号を表示するには、以下を入力します。

op.Outputs(i).PortNumber

出力要素のインデックス。指定された block の出力の端子幅以下の正の整数、またはそのような整数のベクトルとして指定します。既定では、element を指定しない場合、getOutputIndex は選択された出力仕様のすべての要素のインデックスを返します。例については、複数要素をもつ出力仕様の出力インデックスの取得を参照してください。

出力引数

すべて折りたたむ

出力インデックス。element が整数の場合は 2 要素の行ベクトル、element がベクトルの場合は 2 列の配列として返されます。index の各行には単一の出力要素のインデックスが含まれます。

index の最初の列には、opOutputs プロパティ内の対応する出力仕様のインデックスが含まれます。2 列目には出力仕様内での要素インデックスが含まれます。

index を使用して、Simulink モデルのカスタマイズされた平衡化のためのカスタム マッピングの出力部分を指定できます。詳細については、operspecCustomMappingFcn プロパティを参照してください。

バージョン履歴

R2017a で導入