Функция MATLAB ® в диаграмме Stateflow ® является графическим элементом, который используется для написания алгоритмов, которые легче реализовать путем вызова встроенных функций MATLAB. Типичные приложения:
Матрично-ориентированные расчеты
Анализ и визуализация данных
Этот тип функций полезен для алгоритмов кодирования, которые легче выразить с помощью MATLAB вместо графических конструкций Stateflow. Функции MATLAB также обеспечивают оптимизацию для создания эффективного, высококачественного кода C для встраиваемых приложений.
Функция 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 на диаграмме.
Введите подпись подписи для функции.
Метка подписи функции определяет имя функции и формальные имена ее аргументов и возвращаемых значений. Подпись подписи имеет следующий синтаксис:
[return_val1,return_val2,...] = function_name(arg1,arg2,...)Одно и то же имя переменной можно использовать как для аргументов, так и для возвращаемых значений. Например, функция с этой меткой подписи использует переменные y1 и y2 как входы, так и выходы:
[y1,y2,y3] = f(y1,u,y2)
y1 и y2 передаются по ссылке (в качестве указателей), и u передается значением. Передача входных данных по ссылке уменьшает количество раз, когда сгенерированный код копирует промежуточные данные, что приводит к более оптимальному коду.Примечание
Не используйте имя символа диаграммы в качестве аргумента функции или возвращаемого значения. Например, если x или y являются данными диаграммы, определяющими функцию с сигнатурой y = f(x) приводит к ошибке времени выполнения.
Чтобы запрограммировать функцию, откройте редактор MATLAB, дважды щелкнув поле функции.
В редакторе MATLAB введите код MATLAB, реализующий функцию. Дополнительные сведения см. в разделе Программирование функции MATLAB в диаграмме.
В обозревателе моделей разверните объект диаграммы и выберите функцию MATLAB. Аргументы и возвращаемые значения сигнатуры функции отображаются как элементы данных, принадлежащие функции. Аргументы имеют область действия Input. Возвращаемые значения имеют область действия Output.
В диалоговом окне «Свойства данных» для каждого аргумента и возвращаемого значения укажите свойства данных, как описано в разделе «Задать свойства данных».
Создайте любые дополнительные элементы данных, требуемые функцией. Дополнительные сведения см. в разделе Добавление данных через обозреватель моделей.
Функция может получить доступ к собственным данным или данным, принадлежащим родительским состояниям или диаграмме. Элементы данных в функции могут иметь одну из следующих областей:
Constant - Константа данных сохраняет свое начальное значение через все вызовы функций.
Parameter - Данные параметра сохраняют свое начальное значение во всех вызовах функции.
В функциях MATLAB нет необходимости явно создавать локальные или временные данные функций. Если используется неопределенная переменная, Stateflow создает временную переменную, доступную для остальной части функции. Для сохранения значений, сохраняющихся в вызовах функций, используйте ключевое слово persistent.
Функции MATLAB можно вызывать из действий любого состояния или перехода. Можно также вызвать функции MATLAB из других функций. При экспорте функции MATLAB ее можно вызвать из любой диаграммы в модели.
Чтобы вызвать функцию MATLAB, используйте сигнатуру функции и включите фактическое значение аргумента для каждого формального аргумента в сигнатуру функции. Если типы данных фактических и формальных аргументов различаются, функция приводит фактический аргумент к типу формального аргумента.
Свойства функции MATLAB можно задать в обозревателе моделей или в диалоговом окне Свойства функции MATLAB (MATLAB Function properties).
Чтобы использовать Обозреватель моделей (Model Explorer):
Чтобы открыть Обозреватель моделей (Model Explorer), на вкладке Моделирование (Modeling) выберите Обозреватель моделей (Model Explorer).
На панели Иерархия модели (Model Hierarchy) выберите функцию MATLAB.
На панели функции MATLAB измените свойства функции MATLAB.
Для использования диалогового окна Свойства функции MATLAB (MATLAB Function properties):
В редакторе потока состояний щелкните правой кнопкой мыши функцию MATLAB.
Выберите Свойства.
Отредактируйте свойства функции MATLAB.
Свойства функции MATLAB можно также задать программным путем с помощью Stateflow.EMFunction объекты. Дополнительные сведения о программном интерфейсе Stateflow см. в разделе Обзор API Stateflow.
Имя функции. Щелкните ссылку имени функции, чтобы открыть функцию в редакторе MATLAB.
Управляет вложением функции в сгенерированный код:
Auto - определяет необходимость встраивания функции на основе внутреннего расчета.
Inline - встраивает функцию, если она не экспортируется в другие диаграммы и не является частью рекурсии. (Рекурсия существует, если функция вызывает себя прямо или косвенно через другой вызов функции.)
Function - Не выполняет свою функцию.
Подпись подписи для вашей функции. Метка подписи функции определяет имя функции и формальные имена ее аргументов и возвращаемых значений.
Указывает, заполняются ли целочисленные переполнения в созданном коде. Дополнительные сведения см. в разделе Обработка переполнения целых чисел для данных диаграммы.
Это свойство применяется только к функциям MATLAB в диаграммах, использующих C в качестве языка действий. В диаграммах, использующих MATLAB в качестве языка действий, поведение данных зависит от значения свойства Saturate on integer overflow для диаграммы.
fimathОпределяет fimath свойства функции MATLAB. fimath указанные свойства связаны со всеми fi и fimath объекты, созданные в функции MATLAB. Выберите один из следующих вариантов:
То же, что и MATLAB - функция использует то же самое fimath свойства как текущий глобальный fimath. Поле редактирования отображается затемненным и отображает текущий глобальный fimath в форме только для чтения. Для получения дополнительной информации о глобальном fimath и fimath см. документацию по Designer™ фиксированных точек.
Указать другое - указать собственное fimath объект одним из следующих методов:
Создайте fimath объект внутри поля редактирования.
Создайте fimath в рабочей области MATLAB или модели и введите имя переменной в поле редактирования.
Это свойство применяется только к функциям MATLAB в диаграммах, использующих C в качестве языка действий. В диаграммах, использующих MATLAB в качестве языка действий, поведение данных зависит от значения свойства MATLAB Chart fimath для диаграммы.
Описание функции. Можно ввести краткие описания функций в иерархии.
Ссылка на онлайн-документацию для функции. Можно ввести URL-адрес веб-сайта или команду MATLAB, которая отображает документацию в соответствующем интерактивном формате, например HTML-файл или текст в окне команд MATLAB. Если щелкнуть гиперссылку «Документ» (Document), на экране появится файл Stateflow.