exponenta event banner

coder.Constant класс

Пакет: кодер
Суперклассы: 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

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

Запись функции MATLAB identity копирует свои входные данные в выходные данные.

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

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

cfg = coder.config('lib');

Создать код C для identity с постоянным входом 42, а затем создать отчет.

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

В отчете на вкладке Код C щелкните 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