Если переменная управляет потоком: 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 оператор не отображается в сгенерированном коде.