кодер. Постоянный класс

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

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

Описание

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