exponenta event banner

Simulink.findVars

Анализ взаимосвязи между переменными и блоками в моделях

Описание

пример

[variables] = Simulink.findVars(context) находит и возвращает переменные, которые используются в блоках и моделях, указанных context, включая подсистемы и ссылочные модели. Функция возвращает пустой вектор, если context не использует переменные.

пример

[variables] = Simulink.findVars(context,variablefilter) находит только переменные или перечисляемые типы, указанные variablefilter. Например, этот синтаксис используется для определения того, где используется переменная в модели.

пример

[variables] = Simulink.findVars(___,Name,Value) находит переменные с дополнительными опциями, заданными одним или несколькими Name,Value аргументы пары. Например, можно выполнить поиск неиспользуемых переменных. Также можно выполнять поиск перечисляемых типов данных, используемых в context, в дополнение к переменным.

Примеры

свернуть все

Найти переменные, используемые MyModel.

variables = Simulink.findVars('MyModel');

Поиск всех видов использования базовой переменной рабочей области k около MyModel. Используйте кэшированные результаты, чтобы избежать компиляции MyModel.

variables = Simulink.findVars('MyModel','Name','k',
'SearchMethod','cached','SourceType','base workspace');

Поиск всех видов использования переменной, имя которой соответствует регулярному выражению ^trans.

variables = Simulink.findVars('MyModel','Regexp','on',
'Name','^trans');

Учитывая две модели, найдите переменные, используемые первой моделью, второй и обеими

model1Vars = Simulink.findVars('model1');
model2Vars = Simulink.findVars('model2');
commonVars = intersect(model1vars,model2Vars);

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

unusedVars = Simulink.findVars('MyModel','FindUsedVars','off',
'SourceType','model workspace');

Определить, является ли переменная базовой рабочей области k не используется MyModel.

varObj = Simulink.VariableUsage('k','base workspace');
unusedVar = Simulink.findVars('MyModel',varObj,
'FindUsedVars','off');

Поиск переменных, используемых блоком Gain1 в MyModel.

variables = Simulink.findVars('MyModel',
'Users','MyModel/Gain1');

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

variables = Simulink.findVars('MyNestedModel','SearchReferencedModels','on');

Поиск переменных и перечисляемых типов, используемых в MyModel.

varsAndEnumTypes = Simulink.findVars('MyModel','IncludeEnumTypes','on');

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

свернуть все

Модели и блоки для поиска, указанные как символьный вектор, строка, массив ячеек символьных векторов или строковый массив. Можно указать context одним из следующих способов:

  • Имя модели. Например, ('vdp') определяет модель vdp.slx.

  • Имя или путь блока или маскированного блока. Например, ('vdp/Gain1') задает блок с именем Gain1 на корневом уровне модели vdp.slx.

  • Массив ячеек с именами моделей или блоков.

Типы данных: char | cell

Конкретные переменные для поиска, указанные как массив Simulink.VariableUsage объекты. Каждый Simulink.VariableUsage объект определяет переменную для поиска.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'FindUsedVars','off'

Флаг для поиска переменных, которые явно используются или не используются, указанный как пара, разделенная запятыми, состоящая из 'FindUsedVars' и 'on' или 'off. При указании FindUsedVars как 'off', функция находит переменные, которые не используются в context но которые определены в рабочей области, указанной SourceType.

Пример: 'FindUsedVars','off'

Флаг для поиска используемых перечисляемых типов данных, указанных как пара, разделенная запятыми, состоящая из 'IncludeEnumTypes' и 'on' или 'off'. Функция находит перечисляемые типы, которые явно используются в context а также типы, определяющие переменные, используемые в context.

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

При указании SourceType как 'base workspace', 'model workspace', или 'mask workspace', функция не сообщает о перечисляемых типах, поскольку эти источники не могут определить перечисляемые типы.

Невозможно найти неиспользуемые перечислимые типы, указав FindUsedVars как 'off'.

Пример: 'IncludeEnumTypes','on'

Флаг для включения сопоставления регулярных выражений для входных аргументов, указанный как пара, разделенная запятыми, состоящая из 'RegExp' и 'on'. Можно сопоставить только входные аргументы, имеющие значения символьных векторов.

Пример: 'RegExp','on'

Состояние компиляции, указанное как пара, разделенная запятыми, состоящая из 'SearchMethod' и одно из этих значений:

  • 'compiled' - возврат актуальных результатов путем компиляции каждой модели в контексте поиска перед поиском.

  • 'cached' - Быстрее возвращайте результаты, используя результаты, кэшированные во время предыдущей компиляции.

Пример: 'SearchMethod','compiled'

Флаг для включения поиска в ссылочных моделях, указанный как разделенная запятыми пара, состоящая из 'SearchReferencedModels' и 'on'.

Если ссылочная модель использует глобальную переменную, например переменную, хранящуюся в словаре данных, функция возвращает эту глобальную переменную при вызове родительской модели. Если SearchReferencedModels имеет значение 'on', Simulink.VariableUsage объект, возвращаемый функцией, определяет блок в ссылочной модели в качестве пользователя переменной. В противном случае объект определяет блок Model в качестве пользователя.

Пример: 'SearchReferencedModels','on'

Имя переменной или перечисляемого типа данных для поиска, указанного как разделенная запятыми пара, состоящая из 'Name' и символьный вектор или строку.

Пример: 'Name','trans'

Типы данных: char

Рабочая область или источник, определяющие переменные, указанные как пара, разделенная запятыми 'SourceType' и один из следующих вариантов:

  • 'base workspace'

  • 'model workspace'

  • 'mask workspace'

  • 'data dictionary'

Функция фильтрует результаты для переменных, определенных в указанном источнике.

Пример: 'SourceType','base workspace'

При поиске перечисляемых типов данных с помощью указания 'IncludeEnumTypes' как 'on', 'SourceType' представляет способ определения перечисляемого типа. Можно указать одну из следующих опций:

  • 'MATLAB file'

  • 'dynamic class'

  • 'data dictionary'

Функция фильтрует результаты для перечисляемых типов, определенных в указанном источнике.

Пример: 'SourceType','MATLAB file'

Если не указать SourceType, функция не фильтрует результаты по источнику.

Имя конкретного блока для поиска переменных, указанного как разделенная запятыми пара, состоящая из 'Users' и символьный вектор или строку.

Чтобы найти набор определенных блоков, включите сопоставление регулярных выражений, указав RegExp как 'on' и использовать регулярные выражения в символьном векторе. Например, можно указать 'Users','MyModel/Gain* для поиска всех блоков в MyModel чьи имена начинаются с Gain.

Пример: 'Users','MyModel/Gain1'

Пример: 'Users','MyModel/mySubsystem/Gain2'

Пример: 'Users','MyModel/Gain*

Ограничения

Simulink.findVars не работает с этими конструкциями:

  • Код MATLAB ® в сценариях, а также функции инициализации и обратного вызова

  • Библиотеки и блоки в библиотеках

  • Переменные в функциональных блоках MATLAB, за исключением входных аргументов

    Однако Simulink.findVars может найти перечисляемые типы в любом месте, где они используются в функциональных блоках MATLAB.

  • Вызовы непосредственно в MATLAB с языка действий Stateflow ®

  • S-функции, использующие переменные типа данных, зарегистрированные с помощью ssRegisterDataType

    Чтобы сделать переменные доступными для поиска, используйте ssRegisterTypeFromNamedObject вместо этого.

  • Переменные, на которые ссылаются машинно-зависимые данные в Stateflow.

  • Переменные внутри строки.

  • Поле в struct.

Simulink.findVars обнаруживает использование переменной в неактивных вариантах подсистемы, только если для параметра Variant activation time установлено значение code compile в диалоговом окне Блок подсистемы исполнения (Variant Subsystem). Если этот флажок не установлен, функция не обнаруживает использование переменных в неактивных вариантах.

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