Постоянный вход, регистрируясь в MEX-функциях

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

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

  • Если вы используете приложение MATLAB® Coder™:

    1. На странице Generate Code, набор Build type к MEX.

    2. Нажмите More Settings.

    3. На вкладке All Settings, набор Constant Inputs к одному из значений в таблице.

  • Если вы используете codegen, в объекте настройки MEX, набор ConstantInputs свойство к одному из значений в таблице.

Constant Inputs (Приложение)ConstantInputs (Объект настройки)Описание

Check values at run time

'CheckValues'

Это значение является значением по умолчанию.

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

Можно вызвать MEX-функцию и исходную функцию MATLAB с теми же аргументами. Поэтому можно использовать тот же тестовый файл для обеих функций.

Проверка значений может добавить ко времени выполнения MEX-функции.

Ignore input value

'IgnoreValues'

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

Можно использовать тот же тестовый файл без издержек проверки значений аргумента константы.

Remove from MEX signature

'Remove'

Генератор кода удаляет постоянные входные параметры из подписи MEX-функции. Когда вы вызываете MEX-функцию, вы не вводите значение для постоянного входного параметра.

Эта опция для обратной совместимости.

Управляйте, проверяет ли MEX-функция значение постоянного входа

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

Запишите функциональный myadd это возвращает сумму его входных параметров.

function c = myadd(a,b)
c = a + b;
end

Создайте объект настройки для генерации кода MEX.

mexcfg = coder.config('mex');

Посмотрите на значение постоянного входа, проверяющего параметр конфигурации, ConstantInputs.

mexcfg.ConstantInputs
ans =

    'CheckValues'

Это имеет значение по умолчанию, CheckValues.

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

codegen myadd -config mexcfg -args {1, coder.Constant(3)}
Code generation successful.

Вызовите myadd_mex. Необходимо обеспечить вход 3 для второго аргумента.

myadd_mex(1,3)
ans =

     4

Измените ConstantInputs так, чтобы MEX-функция не проверяла, что входное значение совпадает со значением, заданным во время генерации кода.

mexcfg.ConstantInputs = 'IgnoreValues';

Сгенерируйте myadd_mex.

codegen myadd -config mexcfg -args {1, coder.Constant(3)}
Code generation successful.

Вызовите myadd_mex с постоянным входным значением кроме 3, например, 5.

myadd_mex(1,5)
ans =

     4

MEX-функция игнорирует входное значение 5. Это использует значение 3, который является значением, что вы задали для аргумента константы b когда вы сгенерировали myadd_mex.

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

mexcfg.ConstantInputs = 'Remove';

Сгенерируйте myadd_mex.

codegen myadd -config mexcfg -args {1, coder.Constant(3)}
Code generation successful.

Вызовите myadd_mex. Введите значение 1 для a. Не вводите значение для аргумента константы b.

myadd_mex(1)
ans =

     4

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

Похожие темы