В этом примере показано, как указать константы в сгенерированном коде с помощью coder.const. Генератор кода сворачивает выражение или вызов функции в coder.const в константу в сгенерированном коде. Поскольку сгенерированный код не должен каждый раз вычислять выражение или вызывать функцию, эта оптимизация сокращает время выполнения сгенерированного кода.
Запись функции AddShift который принимает входные данные Shift и добавляет его к элементам вектора. Вектор состоит из квадрата первых 10 натуральных чисел. AddShift генерирует этот вектор.
function y = AddShift(Shift) %#codegen y = (1:10).^2+Shift;
Создать код для AddShift с использованием codegen команда. Откройте отчет по созданию кода.
codegen -config:lib -launchreport AddShift -args 0
Генератор кода создает код для создания вектора. Это добавляет Shift к каждому элементу вектора во время создания вектора. Определение AddShift в сгенерированном коде выглядит следующим образом:
void AddShift(double Shift, double y[10])
{
int k;
for (k = 0; k < 10; k++) {
y[k] = (double)((1 + k) * (1 + k)) + Shift;
}
}Заменить выражение (1:10).^2 с coder.const((1:10).^2), а затем создать код для AddShift снова с использованием codegen команда. Откройте отчет по созданию кода.
codegen -config:lib -launchreport AddShift -args 0
Генератор кода создает вектор, содержащий квадраты первых 10 натуральных чисел. В созданном коде добавляется Shift к каждому элементу этого вектора. Определение AddShift в сгенерированном коде выглядит следующим образом:
void AddShift(double Shift, double y[10])
{
int i;
static const signed char iv[10] = { 1, 4, 9, 16, 25, 36,
49, 64, 81, 100 };
for (i = 0; i < 10; i++) {
y[i] = (double)iv[i] + Shift;
}
}