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

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

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

  • При использовании приложение MATLAB® Coder™:

    1. На Сгенерировать Кодовой странице, типе Сборки набора к MEX.

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

    3. На вкладке All Settings, набор Постоянные Вводы к одному из значений в таблице.

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

Постоянные вводы (приложение)ConstantInputs (объект настройки)Описание

Check values at run time

'CheckValues'

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

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

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

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

Ignore input value

'IgnoreValues'

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

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

Remove from MEX signature

Удаление

Генератор кода удаляет постоянные входные параметры из подписи 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)}

Вызовите 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)}

Вызовите 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)}

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

myadd_mex(1)
ans =

     4

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

Похожие темы

Была ли эта тема полезной?