Main Content

本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。

将函数调用折叠为常量

此示例说明如何使用 coder.const 在生成的代码中指定常量。代码生成器在生成代码中将 coder.const 语句中的表达式或函数调用折叠为常量。由于生成的代码不必每次都计算表达式或调用函数,因此这种优化可减少生成代码的执行时间。

编写函数 AddShift,它接受 Shift 输入并将其添加到一个向量的元素。该向量由前 10 个自然数的平方组成。AddShift 可生成此向量。

function y = AddShift(Shift) %#codegen
y = (1:10).^2+Shift;

使用 codegen 命令为 AddShift 生成代码。打开代码生成报告。

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),然后再次使用 codegen 命令为 AddShift 生成代码。打开代码生成报告。

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;
  }
}

另请参阅

相关主题