Сгенерируйте одну MEX-функцию, которая поддерживает несколько подписей

Функция точки входа является функцией MATLAB® верхнего уровня, от которой вы генерируете код. Если ваша функция точки входа имеет входные параметры, необходимо задать свойства входных параметров сгенерировать MEX-функцию. В этом случае сгенерированная MEX-функция работает только с подписью функции точки входа, которую вы задаете во время генерации кода.

Если ваша функция точки входа поддерживает несколько подписей, можно сгенерировать одну MEX-функцию вместо того, чтобы генерировать отдельную MEX-функцию для каждой подписи. Сгенерированная MEX-функция работает с несколькими подписями, обеспеченными во время генерации кода.

При помощи функциональности мультиподписи MEX вы можете:

  • Сгенерируйте одну MEX-функцию, которая поддерживает несколько подписей, которые вы задаете в функции точки входа.

  • Уменьшайте издержки, вовлеченные в генерацию и использование отдельных MEX-функций для каждой подписи вашей функции точки входа.

  • Достигните подобного функции MATLAB поведения в сгенерированной MEX-функции.

Генерация MEX-функции мультиподписи

Чтобы сгенерировать MEX-функцию мультиподписи, рассмотрите этот функциональный myAdd:

function y = myAdd(a,b)
%#codegen
y = a+b;
end
Предположим, что вы хотите сгенерировать MEX-функцию от myAdd это работает с тремя различными типами данных: doubleint8, и vector of doubles. Задайте эти три аргумента как: {1,2}, {int8(2), int8(3)}, и {1:10, 1:10}.

Сгенерировать код для myAdd функция, в командной строке MATLAB, запускает этот codegen команда:

codegen -config:mex myAdd.m -args {1,2} -args {int8(2),int8(3)} -args {1:10,1:10} -report
Этот синтаксис генерирует одну MEX-функцию myAdd_mex для подписей, заданных в codegen команда.

В командной строке вызовите сгенерированную MEX-функцию myAdd_mex. Убедитесь, что значения вы передаете myAdd_mex совпадайте с входными свойствами, которые вы задали в codegen команда.

myAdd_mex(3,4)
ans =

     7
myAdd_mex(int8(5),int8(6))
ans =

  int8

   11
myAdd_mex(1:10,2:11)
ans =

     3     5     7     9    11    13    15    17    19    21

Выполнение функции MATLAB myAdd с этими входными значениями производит тот же выход. Эти тесты проверяют тот myAdd и myAdd_mex имейте то же поведение.

Ограничения

Генерация мультиподписи MEX не поддерживает:

Смотрите также

|

Похожие темы