为字典生成代码
您可以在用于进行代码生成的 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 fibonacci
Code 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