coder.Constant class

Пакет: кодер
Суперклассы: coder.Type

Спецификация постоянного значения для генерации кода

Описание

Используйте coder.Constant объект задать входные значения, которые являются постоянными во время генерации кода. Используйте этот объект с codegen -args и -globals опции, чтобы задать свойства входных параметров и глобальных переменных, соответственно. Не передавайте его как вход к сгенерированной MEX-функции.

Можно использовать coder.Constant объект вместо coder.Type объект задать данное постоянное значение в точке входа входная или глобальная переменная.

Создание

const_type = coder.Constant(v) создает coder.Constant введите от значения v.

const_type = coder.newtype('constant', v) создает coder.Constant введите от значения v.

Примечание

После того, как вы создали coder.Constant объект, можно создать постоянную глобальную переменную g, который имеет значение v при помощи codegen команда: codegen -globals {'g', coder.Constant(v)}.

Свойства

развернуть все

Фактическое значение константы. Также указывает на значение входного параметра v это используется, чтобы создать тип входного параметра.

Здесь, в первом примере, когда k передается в codegen со значением v как 42, соответствующий входной тип выведен как дважды. Точно так же во втором примере, когда k передается в codegen со значением v как 42, соответствующий входной тип выведен как uint8.

Пример: k = coder.Constant(42);

Пример: k = coder.Constant(uint8(42));

Примеры

свернуть все

Запишите функции MATLAB® myAdd это возвращает сумму двух значений.

function c = myAdd(a,b) %#codegen
c = a + b;
end

Сгенерируйте MEX-функцию myAdd_mex. Задайте входные параметры как постоянные со значениями 1 и 3.

codegen myAdd -args {1,3} -report

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

myAdd_mex(2,5)
ans =

     7

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

Сгенерируйте MEX-функцию myAdd_mex путем определения coder.Constant возразите как один из входных параметров. Задайте первый входной параметр так же двойной скаляр и второй входной параметр как константа со значением 1.

codegen myAdd -args {1, coder.Constant(3)} -report

Вызовите myAdd_mex с постоянными входными значениями 2 и 5.

myAdd_mex(2,5)
Constant function parameter 'b' has a different run-time value than the compile-time value.

Error in myAdd_mex

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

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

Запишите функции MATLAB myAdd это возвращает сумму двух значений.

function c = myAdd(a,b) %#codegen
c = a + b;
end

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

mexcfg = coder.config('mex');

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

mexcfg.ConstantInputs
ans =

    '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

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

Запишите функцию MATLAB identity это копирует его вход в его выход.

function y = identity(u) %#codegen
y = u;

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

cfg = coder.config('lib');

Сгенерируйте код С для identity с постоянным входом 42, и затем сгенерируйте отчет.

codegen identity -config cfg -args {coder.Constant(42)} -report

В отчете, на вкладке C code, нажимают identity.c.

Функциональная подпись для identity :

double identity(void)

Задайте постоянное значение для глобальной переменной во время компиляции.

Запишите функции MATLAB myFunction это возвращает значение глобального постоянного g.

function  y = myFunction() %#codegen
global g;

y = g;

end

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

cfg = coder.config('mex');

Задайте массив ячеек globals это объявляет тот g постоянная глобальная переменная со значением 5.

globals = {'g', coder.Constant(5)};

Сгенерируйте MEX-функцию для myFunction при помощи -globals опция, чтобы задать глобальные данные.

codegen -config cfg -globals globals myFunction

Запустите сгенерированную MEX-функцию.

myFunction_mex
ans =

     5

Ограничения

  • Вы не можете использовать coder.Constant на разреженных матрицах, или на структурах, массивах ячеек или классах, которые содержат разреженные матрицы.

Введенный в R2011a
Для просмотра документации необходимо авторизоваться на сайте