Функция начального уровня - это функция верхнего уровня MATLAB ®, из которой создается код. Для многих приложений может потребоваться создать код только для одной функции точки входа. Также можно создать код C/C + + из нескольких функций точки входа одновременно. Используя несколько функций точки входа, можно:
Создайте многофункциональные библиотеки C/C + +, которые содержат более высокий уровень функциональности, чем если бы вы создавали независимые библиотеки для каждой функции начального уровня.
Создание кода, который использует код более эффективно, когда несколько функций точки входа зависят от одних и тех же подфункций.
Создание библиотечных функций, которые могут взаимодействовать с помощью общей памяти, например, когда они используют одни и те же глобальные переменные.
Рекомендуется создать функцию MEX для проверки взаимодействий точек входа в MATLAB перед созданием библиотеки C/C + +.
Чтобы создать код для нескольких функций точки входа, используйте синтаксис из codegen справочная страница. По умолчанию для генерации кода MEX codegen:
Создает функцию MEX в текущей папке. При указании нескольких функций точки входа создается только одна функция MEX. Для вызова одной функции точки входа из сгенерированной функции MEX см. раздел Вызов функции одной точки входа из функции MEX.
Имя функции MEX . name_mex - имя первой функции точки входа в алфавитном порядке.name
Сохранение созданных файлов во вложенной папке codegen/mex/. subfoldersubfolder - имя первой функции точки входа в порядке слева направо (поскольку они вводятся после codegen команда).
Можно указать имя выходного файла и имя подпапки с помощью -o вариант:
codegen -o myOutputFileName fun1 fun2
В этом случае codegen генерирует функцию MEX с именем myOutputFileName в текущей папке и хранит созданные файлы во вложенной папке codegen/mex/myOutputFileName.
Создайте функцию MEX для двух функций начального уровня, ep1 и ep2. Функция ep1 принимает один вход и ep2 принимает два входа. Использование -o , назовите созданную функцию MEX sharedmex:
codegen -o mySharedMex ep1 -args {single(0)} ep2 -args {0,zeros(1,1024)}
codegen генерирует функцию MEX с именем mySharedMex.mex в текущей папке и хранит созданные файлы во вложенной папке codegen/mex/mySharedMex.
Для создания и компиляции кода автономной библиотеки используйте -config:lib вариант.
codegen -config:lib -o mySharedLib ep1 -args single(0) ep2 -args {0,zeros(1,1024)}
codegen генерирует код библиотеки C/C + + в codegen/lib/mySharedLib папка.
Сведения об использовании типа вывода из одной функции точки входа в качестве типа ввода в другой см. в разделе Передача вывода функции точки входа в качестве ввода. Сведения о просмотре функций точки входа в отчете о создании кода см. в разделе Отчеты о создании кода.
Предположим, что у вас есть функция MEX myMex генерируется несколькими функциями точки входа, fun1, fun2, …, funN. Можно вызвать одну функцию точки входа, fun_i, используя следующий синтаксис:
myMex('fun_i',param1,..,paramM)
Здесь подпись функции MATLAB для fun_i является fun_i(param1,..,paramM).
Например, рассмотрим функцию MEX, mySharedMex, который имеет функции начальной точки ep1 и ep2. Звонить ep1 с входным параметром u, введите:
mySharedMex('ep1',u)
Звонить ep2 с входными параметрами v и x, введите:
mySharedMex('ep2',v,x)
В этом примере показано, как создать код для нескольких функций точки входа с помощью приложения MATLAB Coder™.
Создание функций точек входа
В локальной папке для записи создайте файл MATLAB, ep1.m, который содержит:
function y = ep1(u) %#codegen y = u;
В той же локальной папке для записи создайте файл MATLAB, ep2.m, который содержит:
function y = ep2(u, v) %#codegen y = u + v;
Создание тестового файла
В папке, которая содержит ep1.m и ep2.m, создайте файл MATLAB, ep_test.m, что вызывает ep1 и ep2 с вводами примеров.
function [y, y1] = ep_test
y = ep1(single(2));
y1 = ep2(double(3), double(4));Откройте приложение кодера MATLAB
На вкладке Приложения панели инструментов MATLAB в разделе Создание кода щелкните значок приложения Кодер MATLAB.
Указать исходные файлы
На странице «Выбор исходных файлов» введите или выберите имя функции точки входа. ep1.
Приложение создает проект с именем по умолчанию ep1.prj в текущей папке. Чтобы избежать ошибок генерации кода, необходимо сохранить файл проекта и все файлы функций MATLAB в одной папке.
Добавить ep2 в списке функций точки входа щелкните Добавить функцию точки входа. Введите или выберите имя функции точки входа ep2.
Чтобы перейти к шагу Определить типы ввода (Define Input Types), нажмите кнопку Далее (Next). Приложение анализирует функции на предмет проблем кодирования и готовности к созданию кода. Если приложение выявляет проблемы, открывается страница «Проверка готовности к созданию кода», на которой можно просмотреть и устранить проблемы. В этом примере, поскольку приложение не обнаруживает проблем, открывается страница Определение типов ввода.
Определение типов ввода
Поскольку C использует статическую типизацию, во время компиляции кодер MATLAB должен определять свойства всех переменных в файлах MATLAB. Необходимо указать свойства всех входов функций точки входа. На основе свойств входных данных функции начального уровня кодер MATLAB может выводить свойства всех переменных в файлах MATLAB.
Укажите тестовый файл, который MATLAB Coder может использовать для автоматического определения типов:
Введите или выберите тестовый файл ep_test.m.
Щелкните Автоопределить типы ввода (Autodefine Input Types).
тестовый файл, ep_test.m, вызывает функции точки входа ep1 и ep2 с примерами типов ввода. Кодер MATLAB делает вывод, что для ep1, ввод u является single(1x1). Для ep2, u и v являются double(1x1).
Чтобы перейти к шагу Проверка ошибок времени выполнения, нажмите кнопку Далее.
Проверка наличия проблем во время выполнения
Шаг Проверка ошибок времени выполнения создает файл MEX из функций начального уровня, запускает функцию MEX и сообщает о проблемах. Этот шаг необязателен. Однако рекомендуется выполнять этот шаг. Можно обнаруживать и исправлять ошибки времени выполнения, которые труднее диагностировать в сгенерированном коде C.
Чтобы открыть диалоговое окно Проверка на наличие проблем во время выполнения, щелкните стрелку Проверка на наличие проблем.![]()
Приложение заполняет поле тестового файла ep_test, тестовый файл, который использовался для определения типов ввода.
Щелкните Проверить наличие проблем.
Приложение генерирует функцию MEX с именем ep1_mex для ep1 и ep2. Он запускает тестовый файл ep_test замена вызовов ep1 и ep2 с вызовами функции MEX. Если приложение обнаруживает проблемы во время создания или выполнения функции MEX, оно выдает предупреждения и сообщения об ошибках. Чтобы перейти к проблемному коду и устранить проблему, щелкните эти сообщения. В этом примере приложение не обнаруживает проблем.
Чтобы перейти к шагу Создать код (Generate Code), нажмите кнопку Далее (Next).
Создание функции MEX
Чтобы открыть диалоговое окно «Генерировать», щелкните стрелку «Генерировать».![]()
Задать для типа построения значение MEX.
Убедитесь, что имя выходного файла равно ep1_mex. По умолчанию приложение использует имя первой функции точки входа в алфавитном порядке.
Щелкните Создать (Generate).
MATLAB Coder строит проект. Он генерирует функцию MEX, ep1_mex, в текущей папке. Кодер MATLAB также генерирует другие вспомогательные файлы во вложенной папке с именем codegen/mex/ep1_mex. Кодер MATLAB использует имя функции MATLAB в качестве корневого имени для созданных файлов. Он создает специфичное для платформы расширение для файла MEX, как описано в разделе Соглашения по именованию.
Теперь можно протестировать функцию MEX в MATLAB. См. Вызов функции одной точки входа из функции MEX.
При создании статической библиотеки для ep1 и ep2, MATLAB Coder строит проект и создает библиотеку Си, ep1и поддерживающие файлы в папке по умолчанию, codegen/lib/ep1.