Если переменная управляет потоком: if, elseif, else
оператор, или switch,
case, otherwise
оператор, объявите его как константу, чтобы генерация кода происходила только для одной ветви оператора.
В зависимости от особенностей переменной потока управления, можно объявить ее постоянной двумя способами:
Если переменная является локальной для MATLAB® function, присвойте его постоянному значению в коде 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
оператор не отображается в сгенерированном коде.