В этом примере показано, как задать константы в сгенерированном коде с помощью 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; } }