MATLAB Coder

主要特性

  • 生成符合 ANSI/ISO 的 C 和 C++ 代码
  • 生成用于定点和浮点数学运算的 MEX 函数
  • 用于指定入口、输入数据属性和其他代码生成配置选项的 MATLAB Coder 应用程序。
  • 为可变大小数据提供静态或动态内存分配
  • Communications System ToolboxComputer Vision System ToolboxDSP System ToolboxPhased Array System Toolbox™ 中的许多函数和 System objects 提供代码生成支持
  • 支持常见的 MATLAB 语言功能,包括矩阵运算、下标访问、程序控制语句(if、switch、for、while)以及结构

MATLAB Coder 与 Simulink CoderEmbedded Coder 搭配工作,可从含有 MATLAB 代码的 Simulink® 模型生成 C 代码。生成的 C 代码可用于:

  • 独立运行
  • 与其他软件集成
  • 加速 MATLAB 算法
  • 嵌入式实现
MATLAB Coder project manager interface and code generation report showing the generated C code.
MATLAB Coder 项目管理器界面(左)以及显示生成的 C 代码的代码生成报告(右)。

用于代码生成的 MATLAB 语言子集

MATLAB Coder 利用 MATLAB 语言的子集来生成代码;设计工程师通常使用该语言来开发作为大型系统组件的算法。 支持的子集包括 400 多个 MATLAB 运算符和函数

支持一组限定的函数通过 Aerospace ToolboxFixed-Point Designer™Image Processing ToolboxSignal Processing Toolbox 以及 Statistics Toolbox™ 来生成代码。 MATLAB Coder 还支持利用 Communications System ToolboxComputer Vision System ToolboxDSP System Toolbox 以及 Phased Array System Toolbox™ 中的诸多System objects 来生成代码。

MATLAB Coder 支持使用大量 MATLAB 语言属性来开发算法。其中包括:

矩阵和数组,如持续变量、全局变量、矩阵运算、N 维数组、下标访问以及帧

类和数据类型,如复数、整数匹配、双/单精度、定点算法、字符、结构、数字类以及可变大小数据

编程结构,如 MATLAB 程序控制语句(if、for、while、switch)以及算术、关系和逻辑运算符

函数,如函数句柄、子函数、MATLAB 函数的子集、可变长度输入和输出参数列表以及调用 MATLAB 函数的能力

请参阅支持用于代码生成的 MATLAB 语言属性的完整列表。

MATLAB Coder 使用案例

MATLAB Coder 让设计工程师可以在 MATLAB 中开发算法,生成可读可移植的 C/C++ 代码。使用这种生成的代码,您可以:

  • 将 MATLAB 算法作为 PC 上独立可执行文件的原型,同时可将这些算法作为设计规格传递给您的软件工程师
  • 将 MATLAB 代码替换为可以调用所编译 C 或 C++ 代码的自动生成的 MATLAB 可执行文件(MEX 函数),从而加快仿真的某些部分
  • 将 MATLAB 算法作为编译的库组件集成到其他软件(如自定义仿真器)中
  • 在嵌入式处理器上实现并验证 MATLAB 算法
MATLAB Coder use cases.
MATLAB Coder 使用案例。

利用 MATLAB 生成代码

将 MATLAB 算法转换成 C 代码需要指定实现要求。 MATLAB Coder 指导您完成此迭代过程,同时使您能够一直处于 MATLAB 语言环境中。 通过生成 MEX 函数,包含编译的代码,再放回 MATLAB 中执行,您确保您的算法兼容代码生成。 MATLAB Coder 生成一份报告,阐明要使 MATLAB 算法兼容代码生成所必需修复的所有错误。 您在修复错误和重新生成 MEX 函数之间反复迭代,直至您的 MATLAB 算法适于代码生成。 

现在您可以利用您的 MATLAB 算法生成 C 或 C++ 源代码或 MEX 函数(经调节后实现更好的性能)。

C 或 C++ 源代码使您能够:

  • 在 PC 上建立原型
  • 创建库
  • 作为嵌入式代码实现

可以调用 MEX 函数来代替原始 MATLAB 代码,从而:

  • 将编译的代码放回 MATLAB 中进行验证
  • 加快执行速度
Three-step iterative workflow for generating code from MATLAB using  MATLAB Coder.
使用 MATLAB Coder 从 MATLAB 生成代码的三步式迭代工作流程。

MATLAB Coder 与 Simulink Coder 和 Embedded Coder 协作

用于仿真和代码生成的 MATLAB 函数块让您可以添加用 MATLAB 子集编写的 MATLAB 算法,以将 MATLAB 代码集成到 Simulink 模型中。Simulink Coder 让您可以从这些包含 MATLAB 代码的 Simulink 模型生成代码。

Radar tracking model in Simulink with a Kalman filtering algorithm that is written in MATLAB and called using the MATLAB Function block.
Simulink 中的雷达追踪模型。该模型实现了用 MATLAB 编写的卡尔曼滤波算法,可使用 MATLAB 函数模块调用该算法。

Embedded Coder 为支持的嵌入式处理器、目标芯片上快速原型板和大规模生产中使用的微处理器生成代码。通过提供配置选项和高级优化对生成的代码的函数、文件和数据进行细粒度控制,它扩展了 MATLAB Coder 和 Simulink Coder 的功能。Embedded Coder 提高了代码效率,并促进与生产中使用的现有代码、数据类型和校准参数的集成。

使用 Embedded Coder 生成的代码可导出到第三方开发环境中,从而让您能够自动创建可执行程序,部署在您的嵌入式系统中。生成的代码还可以在处理器上执行,通过处理器在回路 (PIL) 和剖析技术来验证行为表现,并收集资源利用情况指标。

试用 MATLAB Coder

获取试用版软件

免费快速入门指南

查看指南