CompoundQuery

Комплексный объект запроса для нахождения определенных блоков в результатах линеаризации

Описание

CompoundQuery объект запроса для поиска всех блоков в LinearizationAdvisor объект, который имеет заданное количество входов.

Когда вы линеаризируете Simulink® модель, можно создать LinearizationAdvisor объект, содержащий диагностическую информацию об отдельных линеаризациях блоков. Чтобы найти линеаризации блоков, которые удовлетворяют определенным критериям, можно использовать find функция с пользовательскими объектами запросов. Также можно проанализировать диагностику линеаризации с помощью Linearization Advisor в Model Linearizer. Для получения дополнительной информации о поиске определенных блоков в результатах линеаризации, смотрите Найти блоки в результатах линеаризации, соответствующих определенным критериям.

Создание

Как создать CompoundQuery объект, объедините другие объекты запроса используя AND (&), ИЛИ (|), и НЕ (~) логические операции. Для получения примера смотрите:

Свойства

расширить все

Тип запроса, заданный как вектор символов. По умолчанию 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Найдите блоки в результатах линеаризации, которые соответствуют определенным критериям

Примеры

свернуть все

Создайте CompundQuery объект для нахождения любых блоков, которые линеаризируются в нуль, или любых блоков, отличных от SISO, которые находятся в пути линеаризации.

Создайте объект запроса для поиска всех блоков, отличных от 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;

Создайте составной объект запроса для нахождения всех блоков с одним входом и одним выходом.

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

Альтернативная функциональность

Приложение

Можно также создать пользовательские запросы для нахождения определенных блоков в результатах линеаризации с помощью консультанта по линеаризации в Model Linearizer. Для получения дополнительной информации смотрите Поиск блоков в результатах линеаризации, соответствующих определенным критериям.

Введенный в R2017b