Повторное использование код MATLAB путем определения функций MATLAB

Функция 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 в графике

  1. В объектной палитре кликните по значку функции MATLAB. Переместите указатель в местоположение для новой функции MATLAB в вашем графике.

  2. Введите метку подписи для функции, как описано в Объявляют Аргументы функции и Возвращаемые значения.

  3. Чтобы программировать функцию, откройте редактор MATLAB путем двойного клика по функциональному полю. Для получения дополнительной информации см. Программу функция MATLAB в Графике.

  4. В редакторе введите код MATLAB, реализующий вашу функцию.

  5. В Model Explorer расширьте объект диаграммы и выберите функцию MATLAB. Аргументы и возвращаемые значения функциональной подписи появляются как элементы данных, которые принадлежат вашей функции. Аргументы имеют осциллограф Input. Возвращаемые значения имеют осциллограф Output.

  6. В диалоговом окне Свойств данных для каждого значения аргумента и возвращаемого значения, задайте свойства данных, как описано в Set Data Properties.

  7. Создайте любые дополнительные элементы данных, требуемые вашей функцией. Для получения дополнительной информации смотрите, Добавляют Данные Через 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 в графике

Можно установить общие свойства для функции MATLAB через ее диалоговое окно свойств. Чтобы открыть функциональное диалоговое окно свойств, щелкните правой кнопкой по полю функции MATLAB и выберите Properties из контекстного меню.

Имя

FunctionName . Щелкните по ссылке имени функции, чтобы открыть вашу функцию в редакторе MATLAB.

Функциональная встроенная опция

Управляет встраиванием вашей функции в сгенерированном коде:

  • Auto — Определяет, встроить ли вашу функцию на основе внутреннего вычисления.

  • Inline — Встраивает вашу функцию, если вы не экспортируете ее в другие графики, и это не часть рекурсии. (Рекурсия существует если ваши вызовы функции сама прямо или косвенно посредством другого вызова функции.)

  • Function — Не встраивает вашу функцию.

Метка

Метка Signature для вашей функции. Для получения дополнительной информации смотрите, Объявляют Аргументы функции и Возвращаемые значения.

Насыщайте на целочисленном переполнении

Задает, насыщает ли целочисленное переполнение в сгенерированном коде. Для получения дополнительной информации смотрите Целочисленное переполнение Указателя для Данных о Графике.

Функция MATLAB 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 отображает документацию.

Похожие темы