Сверните вызовы функции в константы

В этом примере показано, как задать константы в использовании сгенерированного кода coder.const. Генератор кода сворачивает выражение или вызов функции в a 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;
  }
}

Смотрите также

Похожие темы