exponenta event banner

CompoundQuery

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

Описание

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

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

Создание

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

Свойства

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

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

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

Приложение

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

Представлен в R2017b