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 Function, кроме входных параметров

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

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

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

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

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

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

  • Поле в struct.

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

Введенный в R2010a