поиск

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

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

Синтаксис

result = find(advisor,query)

Описание

пример

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

Примеры

свернуть все

Модель Load 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 (&), OR (|), и НЕ (~) логические операции. Например, чтобы найти все блоки на пути к линеаризации, которые не способствуют образцовому результату линеаризации, используйте:

compundQuery = linqueryIsOnPath & ~linqueryContributesToLinearization

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

свернуть все

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

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

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

Введенный в R2017b