主要内容

为字典生成代码

自 R2024b 起

您可以在用于进行代码生成的 MATLAB® 代码中使用 dictionary 对象。dictionary 是一种将数据存储为值的数据结构体,您可以使用对应的键来访问这些值。这种类型的数据结构体也称为哈希映射。有关 MATLAB 中字典的详细信息,请参阅Map Data with Dictionaries

在用于进行代码生成的 MATLAB 代码中使用字典时,需要考虑一些因素。请参阅代码生成的字典限制

代码生成支持的字典函数

代码生成支持除 keyHashkeyMatch 之外的所有 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]
//

另请参阅

(MATLAB Coder) | |

主题