Simulink.findVars

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

Синтаксис

[variables] = Simulink.findVars(context)
[variables] = Simulink.findVars(context,variablefilter)
[variables] = Simulink.findVars(___,Name,Value)

Описание

пример

[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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 в Различном диалоговом окне блока Subsystem. Если вы не устанавливаете этот флажок, функция не обнаруживает переменное использование в неактивных вариантах.

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