Если управление переменными поток: оператор if, elseif, else
или оператор switch, case, otherwise
, объявляет его как постоянный так, чтобы генерация кода произошла для одного ответвления оператора только.
В зависимости от природы переменной потока управления можно объявить его как постоянный двумя способами:
Если переменная локальна для функции MATLAB®, присвойте его постоянному значению в коде MATLAB. Для примера смотрите, Предотвращают Генерацию кода Когда Поток Средств управления Локальной переменной.
Если переменная является входным параметром к функции MATLAB, можно объявить его как постоянное использование coder.Constant
. Для примера смотрите, Предотвращают Генерацию кода Когда Поток Средств управления Входной переменной.
Задайте функциональный SquareOrCube
, который берет входную переменную, in
и квадраты или возводит в куб его элементы на основе того, установлена ли переменная выбора, ch
, в s
или c
:
function out = SquareOrCube(ch,in) %#codegen if ch=='s' out = in.^2; elseif ch=='c' out = in.^3; else out = 0; end
Сгенерируйте код для SquareOrCube
с помощью команды codegen
:
codegen -config:lib SquareOrCube -args {'s',zeros(2,2)}
Квадраты сгенерированного кода C или кубы элементы матрицы 2 на 2 на основе входного параметра для ch
.
Добавьте следующую строку к определению SquareOrCube
:
ch = 's';
Сгенерированный код C придает элементам квадратную форму матрицы 2 на 2. Переменная выбора, ch
и другие ответвления оператора if/elseif/if
не появляются в сгенерированном коде.
Задайте функциональный MathFunc
, который выполняет различные математические операции на входном параметре, in
, в зависимости от значения входного параметра, flag
:
function out = MathFunc(flag,in) %#codegen %# codegen switch flag case 1 out=sin(in); case 2 out=cos(in); otherwise out=sqrt(in); end
Сгенерируйте код для MathFunc
с помощью команды codegen
:
codegen -config:lib MathFunc -args {1,zeros(2,2)}
Сгенерированный код C выполняет различные математические операции на элементах матрицы 2 на 2 на основе входного параметра для flag
.
Сгенерируйте код для MathFunc
, объявив аргумент, flag
, как постоянное использование coder.Constant
:
codegen -config:lib MathFunc -args {coder.Constant(1),zeros(2,2)}
Сгенерированный код C находит синус элементов матрицы 2 на 2. Переменная, flag
и оператор switch/case/otherwise
не появляются в сгенерированном коде.