最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

CompoundQuery

線形化の結果で特定のブロックを検出する複雑なクエリ オブジェクト

説明

LinearizationAdvisor オブジェクトから、指定された数の入力をもつすべてのブロックを検出する CompoundQuery クエリ オブジェクト。

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

作成

CompoundQuery オブジェクトを作成するには、AND (&)、OR (|)、および NOT (~) の論理演算を使用して他のクエリ オブジェクトを組み合わせます。たとえば、以下を参照してください。

プロパティ

すべて展開する

クエリ タイプ。文字ベクトルとして指定します。既定では、QueryType は論理演算子、および複合クエリの作成に使用するクエリの QueryType プロパティを使って構成されます。たとえば、すべての SISO ブロックを検出する複合クエリを作成するとします。

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

その場合、QueryType'(Has 1 Inputs & Has 1 Outputs)' です。

アプリケーションに合わせて QueryType を変更できます。以下に例を示します。

qSISO.QueryType = 'SISO Blocks';

クエリの説明。既定では '' として指定されます。このプロパティを使用してクエリ オブジェクトに独自の説明を追加できます。

オブジェクト関数

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

すべて折りたたむ

ゼロに線形化するか、線形化パス上にあり SISO でないすべてのブロックを検出する CompundQuery オブジェクトを作成します。

SISO でないすべてのブロックを検出するクエリ オブジェクトを作成します。

qNotSISO = ~(linqueryHasOutputs(1) & linqueryHasInputs(1));

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

qOnPath = linqueryIsOnPath;

ゼロに線形化するすべてのブロックを検出するクエリ オブジェクトを作成します。

qZero = linqueryIsZero;

ゼロに線形化するか、線形化パス上にあり SISO でないすべてのブロックを検出するクエリを作成するには、他のクエリ オブジェクトを組み合わせます。

query = (qNotSISO & qOnPath) | qZero
query = 
  CompoundQuery with properties:

      QueryType: '((~((Has 1 Outputs & Has 1 Inputs)) & On Linearization Path) | Linearized to Zero)'
    Description: ''

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)'

代替機能

アプリ

線形解析ツールの線形化アドバイザーを使用して、線形化の結果で特定のブロックを見つけるカスタム クエリを作成することもできます。詳細については、線形化の結果で特定の条件に一致するブロックの検出を参照してください。

R2017b で導入