本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。
将函数调用折叠为常量
此示例说明如何使用 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; } }