MATLAB Coder

 

MATLAB Coder

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

开始:

MATLAB Coder 免费快速入门指南

学习使用 MATLAB Coder 从 MATLAB 算法生成独立 ANSI-C 源代码和 MEX 文件的最佳实践。

快速入门

随时随地运行无阻

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

免版权费部署算法

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

为矩阵乘法生成代码。

为矩阵乘法生成代码。

支持的工具箱和函数

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

从 MATLAB 部署 C++ 代码

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

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

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

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

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

从 MATLAB 类生成 C++ 类

MATLAB Coder 可从 MATLAB 代码中的类生成 C++ 类,包括值类、句柄类和 System object。生成的代码可以编译为 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++ 代码,以部署统计和机器学习模型。更新已部署模型的参数,而无需重新生成 C/C++ 预测代码。

机器学习模型的代码生成工作流。

机器学习模型的代码生成工作流。

硬件原型

将算法自动转换为 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 生成交互式可追溯性报告。

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

优化所生成代码的性能

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

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

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

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

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

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

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

加速算法

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

在 CPU 上加速算法

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

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

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

使用 GPU 加速算法

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