exponenta event banner

найти

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

Описание

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

пример

result = find(advisor,query) возвращает подмножество диагностики блоков в advisor , которые соответствуют критериям поиска, указанным в query.

Примеры

свернуть все

Загрузить модель 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'

Загрузите модель 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)'

Входные аргументы

свернуть все

Диагностическая информация для блочных линеаризаций, указанная как LinearizationAdvisor объект или массив LinearizationAdvisor объекты.

Критерии поиска, указанные как один из следующих объектов запроса или логическая комбинация объектов запроса (CompoundQuery объект).

Объект запросаНайти блоки, которые...
linqueryAdviseПотенциально проблематичны для линеаризации.
linqueryAllBlocksНаходятся в advisor объект.
linqueryContributesToLinearizationЧисленный вклад в результат линеаризации модели.
linqueryHasDiagnosticsИметь диагностические сообщения относительно их линеаризации.
linqueryHasInputsИметь указанное количество входов.
linqueryHasOrderИметь указанное число состояний.
linqueryHasOutputsИметь указанное количество выходов.
linqueryHasSampleTimeУкажите время выборки.
linqueryHasZeroIOPairИметь по крайней мере одну пару вход/выход, которая линеаризуется до нуля.
linqueryIsBlockSubstitutedУказать пользовательскую линеаризацию блоков.
linqueryIsBlockTypeОтносятся к указанному типу.
linqueryIsExactЛинеаризуются с использованием определенной точной линеаризации.
linqueryIsNumericallyPerturbedЛинеаризованы с использованием численного возмущения.
linqueryIsOnPathНаходятся на пути линеаризации.
linqueryIsZeroЛинеаризовать до нуля.

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

compundQuery = linqueryIsOnPath & ~linqueryContributesToLinearization

Выходные аргументы

свернуть все

Диагностическая информация для блоков, соответствующих критериям поиска, указанным в query, возвращается как:

  • LinearizationAdvisor объект, если advisor является одиночным LinearizationAdvisor объект.

  • A LinearizationAdvisor объект с теми же размерами, что и advisor если advisor является массивом.

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