find

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

Описание

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

пример

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