find
線形化の結果で特定の条件を満たすブロックを検出
説明
Simulink® モデルを線形化する際、個々のブロック線形化に関する診断情報を含む LinearizationAdvisor
オブジェクトを作成できます。特定の条件を満たすブロック線形化を検出するには、カスタム クエリ オブジェクトを指定して関数 find
を使用します。あるいは、モデル線形化器で線形化アドバイザーを使用して線形化の診断を解析することもできます。線形化の結果から特定のブロックを検出する方法の詳細については、線形化の結果で特定の条件に一致するブロックの検出を参照してください。
例
線形化パス上のブロックの検出
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'
すべての SISO ブロックの検出
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)'
入力引数
advisor
— ブロック線形化の診断情報
LinearizationAdvisor
オブジェクト | LinearizationAdvisor
オブジェクトの配列
ブロック線形化の診断情報。LinearizationAdvisor
オブジェクトまたは LinearizationAdvisor
オブジェクトの配列として指定します。
query
— 検索条件
CompoundQuery
オブジェクト | linqueryIsOnPath
オブジェクト | linqueryHasDiagnostics
オブジェクト | linqueryHasOrder
オブジェクト | ...
検索条件。次のいずれかのクエリ オブジェクトか、クエリ オブジェクトの論理組み合わせ (CompoundQuery
オブジェクト) として指定します。
クエリ オブジェクト | 検出するブロックの特徴 |
---|---|
linqueryAdvise | 線形化で問題が生じる可能性がある。 |
linqueryAllBlocks | advisor オブジェクト内にある。 |
linqueryContributesToLinearization | モデルの線形化結果に数値的に寄与する。 |
linqueryHasDiagnostics | 自らの線形化に関する診断メッセージをもつ。 |
linqueryHasInputs | 指定された数の入力をもつ。 |
linqueryHasOrder | 指定された数の状態をもつ。 |
linqueryHasOutputs | 指定された数の出力をもつ。 |
linqueryHasSampleTime | 指定されたサンプル時間をもつ。 |
linqueryHasZeroIOPair | ゼロに線形化する入力/出力ペアを少なくとも 1 つもつ。 |
linqueryIsBlockSubstituted | カスタムのブロック線形化が指定されている。 |
linqueryIsBlockType | 指定されたタイプである。 |
linqueryIsExact | 定義された正確な線形化を使用して線形化される。 |
linqueryIsNumericallyPerturbed | 数値摂動法を使用して線形化される。 |
linqueryIsOnPath | 線形化パス上にある。 |
linqueryIsZero | ゼロに線形化する。 |
複合クエリを作成するには、AND (&
)、OR (|
)、および NOT (~
) の論理演算子を使ってこれらのクエリを組み合わせます。たとえば、線形化パス上にあり、モデルの線形化の結果に寄与しないすべてのブロックを検出するには、次を使用します。
compundQuery = linqueryIsOnPath & ~linqueryContributesToLinearization
出力引数
バージョン履歴
R2017b で導入
参考
オブジェクト
関数
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)