exponenta event banner

Постоянная проверка ввода в функциях MEX

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

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

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

    1. На странице «Создание кода» задайте для параметра «Тип построения» значение MEX.

    2. Щелкните Дополнительные параметры.

    3. На вкладке Все параметры (All Settings) задайте для параметра Постоянные входы (Constant Inputs) одно из значений в таблице.

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

Постоянные входы (приложение)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

См. также

Связанные темы