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