Main Content

find

線形化の結果で特定の条件を満たすブロックを検出

説明

Simulink® モデルを線形化する際、個々のブロック線形化に関する診断情報を含む LinearizationAdvisor オブジェクトを作成できます。特定の条件を満たすブロック線形化を検出するには、カスタム クエリ オブジェクトを指定して関数 find を使用します。あるいは、モデル線形化器で線形化アドバイザーを使用して線形化の診断を解析することもできます。線形化の結果から特定のブロックを検出する方法の詳細については、線形化の結果で特定の条件に一致するブロックの検出を参照してください。

result = find(advisor,query) は、advisorquery に指定された検索条件に一致するブロック診断情報のサブセットを返します。

すべて折りたたむ

Simulink モデルを読み込みます。

mdl = 'scdspeed';
load_system(mdl)

モデルを線形化して LinearizationAdvisor オブジェクトを取得します。

opts = linearizeOptions('StoreAdvisor',true);
io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');
[sys,~,info] = linearize(mdl,io,opts);
advisor = info.Advisor;

線形化パス上のブロックを検出するクエリ オブジェクトを作成します。

query = linqueryIsOnPath;

クエリ オブジェクトを使用してブロックを検出します。

advOnPath = find(advisor,query)
advOnPath = 
  LinearizationAdvisor with properties:

               Model: 'scdspeed'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x26 linearize.advisor.BlockDiagnostic]
           QueryType: 'On Linearization Path'

Simulink モデルを読み込みます。

mdl = 'scdspeed';
load_system(mdl)

モデルを線形化して LinearizationAdvisor オブジェクトを取得します。

opts = linearizeOptions('StoreAdvisor',true);
io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');
[sys,op,info] = linearize(mdl,io,opts);
advisor = info.Advisor;

1 つの入力と 1 つの出力をもつすべてのブロックを検出するための複合クエリ オブジェクトを作成します。

qSISO = linqueryHasInputs(1) & linqueryHasOutputs(1);

複合クエリ オブジェクトを使用してすべての SISO ブロックを検出します。

advSISO = find(advisor,qSISO)
advSISO = 
  LinearizationAdvisor with properties:

               Model: 'scdspeed'
      OperatingPoint: [1x1 opcond.OperatingPoint]
    BlockDiagnostics: [1x10 linearize.advisor.BlockDiagnostic]
           QueryType: '(Has 1 Inputs & Has 1 Outputs)'

入力引数

すべて折りたたむ

ブロック線形化の診断情報。LinearizationAdvisor オブジェクトまたは LinearizationAdvisor オブジェクトの配列として指定します。

検索条件。次のいずれかのクエリ オブジェクトか、クエリ オブジェクトの論理組み合わせ (CompoundQuery オブジェクト) として指定します。

クエリ オブジェクト検出するブロックの特徴
linqueryAdvise線形化で問題が生じる可能性がある。
linqueryAllBlocksadvisor オブジェクト内にある。
linqueryContributesToLinearizationモデルの線形化結果に数値的に寄与する。
linqueryHasDiagnostics自らの線形化に関する診断メッセージをもつ。
linqueryHasInputs指定された数の入力をもつ。
linqueryHasOrder指定された数の状態をもつ。
linqueryHasOutputs指定された数の出力をもつ。
linqueryHasSampleTime指定されたサンプル時間をもつ。
linqueryHasZeroIOPairゼロに線形化する入力/出力ペアを少なくとも 1 つもつ。
linqueryIsBlockSubstitutedカスタムのブロック線形化が指定されている。
linqueryIsBlockType指定されたタイプである。
linqueryIsExact定義された正確な線形化を使用して線形化される。
linqueryIsNumericallyPerturbed数値摂動法を使用して線形化される。
linqueryIsOnPath線形化パス上にある。
linqueryIsZeroゼロに線形化する。

複合クエリを作成するには、AND (&)、OR (|)、および NOT (~) の論理演算子を使ってこれらのクエリを組み合わせます。たとえば、線形化パス上にあり、モデルの線形化の結果に寄与しないすべてのブロックを検出するには、次を使用します。

compundQuery = linqueryIsOnPath & ~linqueryContributesToLinearization

出力引数

すべて折りたたむ

query に指定された検索条件に一致するブロックの診断情報。以下のように返されます。

  • advisor が単一の LinearizationAdvisor オブジェクトの場合は LinearizationAdvisor オブジェクト。

  • advisor が配列の場合は advisor と同じ次元をもつ LinearizationAdvisor オブジェクト。

バージョン履歴

R2017b で導入