Функция MATLAB® в графике Stateflow® является графическим элементом, который вы используете, чтобы написать алгоритмы, которые легче реализовать путем вызова встроенных функций MATLAB. Типовые приложения включают:
Ориентированные на матрицу вычисления
Анализ данных и визуализация
Этот тип функции полезен для алгоритмов кодирования, которые более легко выражаются при помощи MATLAB вместо графических построений Stateflow. Функции MATLAB также обеспечивают оптимизацию для генерации эффективного, код С производственного качества для встраиваемых приложений.
Функция MATLAB может находиться где угодно в графике, состоянии или подграфике. Местоположение функции определяет набор состояний и переходов, которые могут вызвать функцию.
Если вы хотите вызвать функцию только в одном состоянии или подграфике и его подсостояниях, поместите свою функцию MATLAB в то состояние или подграфик. Эта функция заменяет любые другие функции того же имени в родительских элементах и предках того состояния или подграфика.
Если вы хотите вызвать функцию где-нибудь в том графике, поместите свою функцию MATLAB в уровень графика.
Если вы хотите вызвать функцию из какого-либо графика в вашей модели, поместите свою функцию MATLAB в уровень графика и позвольте экспортировать функций уровня графика. Для получения дополнительной информации смотрите Экспорт Функции Stateflow для Повторного использования.
Например, эта функция MATLAB имеет имя stdevstats
. Это берет аргумент vals
и возвращает выходное значение stdevout
.
Вычислить стандартное отклонение значений в vals
, функция использует этот код.
function stdevout = stdevstats(vals) %#codegen % Calculates the standard deviation for vals len = length(vals); stdevout = sqrt(sum(((vals-avg(vals,len)).^2))/len); function mean = avg(array,size) mean = sum(array)/size;
В объектной палитре кликните по значку функции MATLAB. Переместите указатель в местоположение для новой функции MATLAB в вашем графике.
Введите метку подписи для функции, как описано в Объявляют Аргументы функции и Возвращаемые значения.
Чтобы программировать функцию, откройте редактор MATLAB путем двойного клика по функциональному полю. Для получения дополнительной информации см. Программу функция MATLAB в Графике.
В редакторе введите код MATLAB, реализующий вашу функцию.
В Model Explorer расширьте объект диаграммы и выберите функцию MATLAB. Аргументы и возвращаемые значения функциональной подписи появляются как элементы данных, которые принадлежат вашей функции. Аргументы имеют осциллограф Input
. Возвращаемые значения имеют осциллограф Output
.
В диалоговом окне Свойств данных для каждого значения аргумента и возвращаемого значения, задайте свойства данных, как описано в Set Data Properties.
Создайте любые дополнительные элементы данных, требуемые вашей функцией. Для получения дополнительной информации смотрите, Добавляют Данные Через Model Explorer.
Ваша функция может получить доступ к своим собственным данным или данным, принадлежащим родительским состояниям или графику. Элементы данных в функции могут иметь один из этих осциллографов:
Local
— Локальные данные сохраняются от одного вызова функции до следующего вызова функции. Допустимый для C строит диаграмму только.
Constant
— Постоянные данные сохраняют свое начальное значение посредством всех вызовов функции.
Parameter
— Данные о параметре сохраняют свое начальное значение посредством всех вызовов функции.
Temporary
— Временные данные инициализируют в начале каждого вызова функции. Допустимый для C строит диаграмму только.
Можно инициализировать функциональные данные (кроме аргументов и возвращаемых значений) от рабочего пространства MATLAB. Для получения дополнительной информации смотрите, Инициализируют Данные из Базового рабочего пространства MATLAB.
В графиках, которые используют C в качестве языка действия, задайте временные данные, когда это необходимо, чтобы использовать данные, которые только допустимы, в то время как функция выполняется. Например, можно определять счетчик цикла иметь Temporary
определите объем, если встречное значение не должно сохраняться после того, как функция завершается.
В графиках, которые используют MATLAB в качестве языка действия, вы не должны задавать временные функциональные данные. Если вы используете неопределенную переменную, Stateflow создает временную переменную. Переменная доступна для остальной части функции.
В диаграммах Stateflow в моделях Simulink® можно использовать перечисленные данные и данные переменного размера в функциях MATLAB. Для получения дополнительной информации смотрите Генерацию кода для Перечислений (Simulink) и Объявите Вводы и выводы Переменного Размера (Simulink).
Функциональная метка подписи задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:
[return_val1,return_val2,...] = function_name(arg1,arg2,...)
Можно использовать то же имя переменной и в аргументах и в возвращаемых значениях. Например, функция с этой меткой подписи использует переменные y1
и y2
как оба ввода и вывода:
[y1,y2,y3] = f(y1,u,y2)
y1
и y2
передаются ссылкой (как указатели), и u
передается значением. Передача входных параметров ссылкой уменьшает число раз, что сгенерированный код копирует промежуточные данные, приводящие к более оптимальному коду.Можно вызвать функции MATLAB от действий любого состояния или перехода. Можно также вызвать функции MATLAB от других функций. Если вы экспортируете функцию MATLAB, можно вызвать ее из любого графика в модели.
Синтаксис для вызова функции MATLAB совпадает с функциональной подписью с действительными аргументами, заменяющими формальные единицы, заданные в подписи. Если типы данных фактического и формального аргумента отличаются, функция бросает действительный аргумент к типу формального аргумента.
Если формальные аргументы функциональной подписи являются скалярами, проверяют, что вводы и выводы вызовов функции следуют правилам скалярного расширения. Для получения дополнительной информации смотрите Значения Присвоения ко Всем Элементам Матрицы.
Можно установить общие свойства для функции MATLAB через ее диалоговое окно свойств. Чтобы открыть функциональное диалоговое окно свойств, щелкните правой кнопкой по полю функции MATLAB и выберите Properties из контекстного меню.
FunctionName . Щелкните по ссылке имени функции, чтобы открыть вашу функцию в редакторе MATLAB.
Управляет встраиванием вашей функции в сгенерированном коде:
Auto
— Определяет, встроить ли вашу функцию на основе внутреннего вычисления.
Inline
— Встраивает вашу функцию, если вы не экспортируете ее в другие графики, и это не часть рекурсии. (Рекурсия существует если ваши вызовы функции сама прямо или косвенно посредством другого вызова функции.)
Function
— Не встраивает вашу функцию.
Метка Signature для вашей функции. Для получения дополнительной информации смотрите, Объявляют Аргументы функции и Возвращаемые значения.
Задает, насыщает ли целочисленное переполнение в сгенерированном коде. Для получения дополнительной информации смотрите Целочисленное переполнение Указателя для Данных о Графике.
fimath
Задает fimath
свойства для функции MATLAB. fimath
заданные свойства сопоставлены со всем fi
и fimath
объекты создаются в функции MATLAB. Выберите одну из этих опций:
Same as MATLAB — Функция использует тот же fimath
свойства как текущий глобальный fimath
. Окно редактирования появляется, потускнел и отображает текущий глобальный fimath
в форме только для чтения. Для получения дополнительной информации о глобальном fimath
и fimath
объекты, см. документацию Fixed-Point Designer™.
Specify Other — Задайте свой собственный fimath
объект одним из этих методов:
Создайте fimath
возразите в окне редактирования.
Создайте fimath
объект в рабочем пространстве MATLAB или рабочем пространстве модели и вводит свое имя переменной в окне редактирования.
Функциональное описание. Можно ввести краткие описания функций в иерархии.
Соединитесь с онлайн-документацией для функции. Можно ввести веб-адрес URL или команду MATLAB, которая отображает документацию в подходящем онлайн-формате, таком как файл HTML или текст в Окне Команды MATLAB. Когда вы кликаете по гиперссылке Document link, Stateflow отображает документацию.