为字典生成代码
您可以在用于进行代码生成的 MATLAB® 代码中使用 dictionary 对象。dictionary 是一种将数据存储为值的数据结构体,您可以使用对应的键来访问这些值。这种类型的数据结构体也称为哈希映射。有关 MATLAB 中字典的详细信息,请参阅Map Data with Dictionaries。
在用于进行代码生成的 MATLAB 代码中使用字典时,需要考虑一些因素。请参阅代码生成的字典限制。
代码生成支持的字典函数
代码生成支持除 keyHash 和 keyMatch 之外的所有 MATLAB 字典函数。有关特定于代码生成的用法说明和限制,请参阅每个函数参考页的“扩展功能”部分。
示例:使用字典生成代码来计算斐波那契数
此示例说明如何为一个 MATLAB 函数生成代码,该函数使用字典来计算并返回斐波那契数列中指定位置的值。
定义 MATLAB 函数
定义函数 fibonacci,该函数以迭代方式计算第 n 个斐波那契数,并使用字典存储中间结果。使用字典可以避免重复计算前面的斐波那契数,从而提高性能。在 fibonacci 函数中,使用 arguments 模块指定输入为双精度标量。
type("fibonacci.m")function out = fibonacci(n)
arguments
n (1,1) double
end
d = dictionary(1,1,0,0);
maxKey = 1;
while maxKey < n
d(maxKey+1) = d(maxKey)+d(maxKey-1);
maxKey = maxKey+1;
end
out = d(n);
end
用示例输入值在 MATLAB 中测试该函数。
fibonacci(15)
ans = 610
使用 MEX 函数检查问题
在命令行中使用 codegen (MATLAB Coder) 命令为 fibonacci 函数生成 MEX 代码。由于您在 arguments 代码块中指定输入类型,因此不需要指定输入参量。
codegen fibonacciCode generation successful.
使用用于测试 MATLAB 函数的相同值来测试 MEX 函数。
fibonacci_mex(15)
ans = 610
生成 C++ 代码
在命令行中为 fibonacci 函数生成独立的 C++ 代码。使用 -config:lib 和 -lang:c++ 选项生成 C++ 静态库。
codegen -config:lib -lang:c++ fibonacci
Warning: Code generation is using a coder.EmbeddedCodeConfig object. Because Embedded Coder is not installed, this might cause some Embedded Coder features to fail. Code generation successful (with warnings): View report
检查生成的 C++ 函数。
type(fullfile("codegen","lib","fibonacci","fibonacci.cpp"))
//
// File: fibonacci.cpp
//
// MATLAB Coder version : 25.2
// C/C++ source code generated on : 09-Aug-2025 12:53:31
//
// Include Files
#include "fibonacci.h"
#include "dictionary.h"
// Function Definitions
//
// Arguments : double n
// Return Type : double
//
double fibonacci(double n)
{
coder::dictionary d;
double out;
d.init();
for (out = 1.0; out < n; out++) {
double b_d;
b_d = d.read(out) + d.read(out - 1.0);
d.write(b_d, out + 1.0);
}
return d.read(n);
}
//
// File trailer for fibonacci.cpp
//
// [EOF]
//
另请参阅
codegen (MATLAB Coder) | fiaccel | arguments