CompoundQuery

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

Описание

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

Когда вы линеаризуете модель Simulink®, можно создать объект LinearizationAdvisor, который содержит диагностическую информацию об отдельной линеаризации блока. Чтобы найти линеаризацию блока, которая удовлетворяет определенные критерии, можно использовать функцию find с объектами пользовательского запроса. Также можно анализировать диагностику линеаризации с помощью Советника по вопросам Линеаризации в Linear Analysis Tool. Для получения дополнительной информации о нахождении определенных блоков в результатах линеаризации смотрите, Находят Блоки в Результатах Линеаризации, Совпадающих с Определенными Критериями.

Создание

Чтобы создать объект CompoundQuery, объедините другие объекты запроса с помощью AND (&), OR (|), и НЕ (~) логические операции. Например, см.:

Свойства

развернуть все

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

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

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

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

qOnPath = linqueryIsOnPath;

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

qZero = linqueryIsZero;

Чтобы создать запрос для нахождения любых блоков, которые линеаризуют, чтобы обнулить или любые блоки non-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)'

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

Приложение

Можно также создать пользовательские запросы для нахождения определенных блоков в результатах линеаризации с помощью Советника по вопросам Линеаризации в Linear Analysis Tool. Для получения дополнительной информации смотрите, Находят Блоки в Результатах Линеаризации, Совпадающих с Определенными Критериями.

Введенный в R2017b