MATLAB Coder

从 MATLAB 代码生成 C 和 C++ 代码

 

MATLAB Coder™ 从 MATLAB® 代码生成 C 和 C++ 代码,以便您部署到包括桌面系统和嵌入式硬件在内的多种硬件平台。该产品支持多数 MATLAB 代码和多种工具箱。您可以将生成的代码作为源代码、静态库或动态库集成到您的项目。生成的代码可读且可移植。您可以将该代码与现有 C 和 C++ 代码以及库的关键部分相结合。您还可以将生成的代码打包为 MEX 函数,以在 MATLAB 中使用。

结合 Embedded Coder®,MATLAB Coder 还支持代码自定义、特定于目标的优化、代码可追溯性以及软件在环 (SIL) 和处理器在环 (PIL) 验证。

要将 MATLAB 程序部署为独立应用程序,请使用 MATLAB Compiler™。要生成软件组件,以便与其他编程语言集成,请使用 MATLAB Compiler SDK™。

快速入门:

随时随地运行无阻

生成可读可移植的 ANSI C/C++ 源代码,并且免版权费部署代码

免版权费部署算法

您可以使用任何 C/C++ 编译器编译代码,并可以在包括桌面系统、移动设备到嵌入式硬件在内的任何硬件上运行生成的代码。生成的代码免版权费,您可将其免费部署到面向客户的商用应用。

为矩阵乘法生成代码。

支持的工具箱和函数

MATLAB Coder 可从多种 MATLAB 语言功能生成代码,设计工程师基于这些功能开发算法以用作大型系统组件。该产品支持来自 MATLAB 以及配套工具箱的超过 2,500 个运算符和函数。

MATLAB 语言和工具箱支持代码生成。

从 MATLAB 部署 C++ 代码

将生成的代码与面向对象的 C++ 源代码集成。

使用命名空间生成 C++ 代码

MATLAB Coder 可以生成包含在命名空间中的 C++ 代码,以便您将其轻松集成到可能具有同名函数或同名数据类型的其他源代码。代码生成器会将所有生成的函数和类型定义打包到命名空间。

使用命名空间生成代码,将具有同名数据类型的变量集成到一起。

从 MATLAB 类生成 C++ 类

MATLAB Coder 可从 MATLAB 代码中的类成生 C++ 类,包括值类、句柄类和 System object。生成的代码可以编译为 C++ 库或可执行文件,还可以集成到您的现有 C++ 源代码。

生成的具有类接口的 C++ 代码。

在生成的函数接口使用动态分配的 C++ 数组

如果某一 MATLAB 函数接受或返回编译时大小未知的数组,或其边界超出预定义的阈值,您也可以为其生成 C++ 代码。在生成的代码中,数组具有动态内存分配,以名为 coder::array 的类模板实现。coder::array 可对异常安全代码取消内存分配,还提供 API 来访问和管理动态数组。

将动态分配的数组传递到生成的函数。

部署深度学习网络

从经过训练的深度学习网络生成代码。

部署端到端深度学习算法

将多种经过训练的深度学习网络(如 ResNet-50 和 MobileNet-v2)以及各类网络层(如 LSTM)从 Deep Learning Toolbox™ 部署到 Intel® 和 ARM® Cortex® CPU。除了经过训练的深度学习网络,您还可以同时为预处理和后处理生成代码,以部署完整的算法。

针对推断生成优化代码

由于 MATLAB Coder 仅生成特定算法运行推断所需的代码,因此该代码相比其他深度学习解决方案运行更快、内存占用量更少。生成的代码会调用优化的库,包括针对 Intel 处理器的 Intel MKL-DNN,以及针对 ARM Cortex 处理器的 ARM Compute Library。使用 GPU Coder™ 生成可在现代 NVIDIA® GPU 上运行的 CUDA® 代码,从而加速或部署算法。

硬件原型实现

将算法自动转换为 C/C++ 语言以快速在硬件上实现。

桌面和云平台原型实现

使用 MATLAB Coder 或等效命令行函数,为信号处理、计算机视觉、深度学习、控制系统或其他应用快速生成代码,然后针对硬件编译代码。

在桌面和云平台上快速构建算法原型。

嵌入式和移动平台原型实现

将生成的代码手动集成到您的应用,以在各种目标设备上实现。针对 Raspberry Pi,借助 MATLAB Support Package for Raspberry Pi Hardware自动化该过程。

在嵌入式和移动平台上快速构建算法原型。

从原型到生产

将 MATLAB Coder 和 Embedded Coder 结合使用,可在生成的代码中有效利用特定于处理器的内部函数,这些函数的执行速度快于标准 ANSI/ISO C/C++ 代码。

分析所生成的独立代码的执行时间。

与软件集成

在软件环境中以 C/C++ 代码形式重用 MATLAB 算法。

生成接口简单、易于集成的代码

生成的代码以自然的方式使用 C/C++ 类型,简化了集成到外部代码的过程。您可以将生成的代码作为源代码或库进行集成。您可以在 MATLAB 中引入受信任的 C/C++ 库或组件以执行保真度更高的测试,并可从生成的代码中自动调用它们。

结合使用 MATLAB Coder 和 Embedded Coder 生成交互式可追溯性报告。

优化所生成代码的性能

应用优化以在执行速度、内存使用量、可读性和可移植性之间进行权衡。使用分析工具确定瓶颈。要进一步提升性能,请生成多核 OpenMP 代码并调用 LAPACK、BLAS 和 FFTW 等优化库(如有)。

示例:在生成的代码中调用 OpenMP。

在集成前对生成的代码重用 MATLAB 测试

重用现有 MATLAB 测试以在交互式 MATLAB 环境中验证所生成代码的行为。使用 MATLAB 单元测试框架快速开发一组功能丰富的回归测试,以用于验证生成的 C/C++ 代码。

在与应用程序集成之前验证所生成代码的行为。

加速算法

生成 C/C++ 代码并进行编译,以在 MATLAB 内使用。

在 CPU 上加速算法

您可以从 MATLAB 代码以 MEX 函数的形式调用生成的代码以加速执行,不过性能将因 MATLAB 代码本身的特性而异。您可以分析所生成的 MEX 函数,以确定瓶颈并重点优化。

分析 MEX 函数以确定性能瓶颈。

使用 GPU 加速算法

使用 Parallel Computing Toolbox™ 加速在 MATLAB 中运行的算法。使用 GPU Coder 生成可在现代 NVIDIA GPU 上运行的 CUDA 代码,以便进行加速或部署。

最新特性

C++ 代码

从 MATLAB 类生成 C++ 类

C++ 代码

在生成的函数接口使用动态分配的 C++ 数组

Coder Type Editor

交互式创建和编辑输入类型

快速 FFT

改善为快速傅里叶变换 (FFT) 函数所生成代码的性能

日期时间和时间表

为日期时间数组和时间表生成代码

Optimization Toolbox 代码生成

使用 quadprog 为具有线性约束和二次目标的问题生成 C 代码

长短期记忆 (LSTM) 网络

为 LSTM 等循环网络生成代码

深度学习网络

为 DenseNet-201 和 Xception 生成代码

关于这些特性和相应函数的详细信息,请参阅产品发布说明

Panel Navigation

使用 MATLAB 轻松生成 C 代码

了解 MATLAB Coder 使用技巧和最佳实践,并查看 Delphi、Baker Hughes、iSonea 和 dorsaVi 等公司生成代码并实现应用的成功案例。