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.

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

Simulink.findVars обнаруживает переменное использование в неактивных вариантах подсистемы, только если вы выбираете Analyze all choices during update diagram and generate preprocessor conditionals в диалоговом окне блока Variant Subsystem. Если вы не устанавливаете этот флажок, функция не обнаруживает переменное использование в неактивных вариантах.

Введен в R2010a