coder.Constant class

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

Представляйте набор, содержащий одно значение MATLAB

Описание

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

Конструкция

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

codegen -globals {'g', coder.Constant(v)} создает постоянную глобальную переменную g со значением v.

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

Входные параметры

v

Постоянное значение раньше создавало тип.

Свойства

Value

Фактическое значение константы.

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

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

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

function c = myadd(a,b)
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

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

Запишите функциональный 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)

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

Запишите функциональный 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