MATLAB Coder 从 MATLAB 代码生成 C 和 C++ 代码,以便您部署到包括桌面系统和嵌入式硬件在内的多种硬件平台。该产品支持多数 MATLAB 代码和各种工具箱。您可以将生成的代码作为源代码、静态库或动态库集成到您的项目。生成的代码可读且可移植。您可以将该代码与现有 C 和 C++ 代码以及库的关键部分相结合。您还可以将生成的代码打包为 MEX 函数,以在 MATLAB 中使用。
结合 Embedded Coder,MATLAB Coder 还支持代码自定义、特定于目标的优化、代码可追溯性以及软件在环 (SIL) 和处理器在环 (PIL) 验证。
要将 MATLAB 程序部署为独立应用程序,请使用 MATLAB Compiler。要生成软件组件,以便与其他编程语言集成,请使用 MATLAB Compiler SDK。
开始:
免版权费部署算法
您可以使用任何 C/C++ 编译器编译代码,并可以在包括桌面系统、移动设备到嵌入式硬件在内的任何硬件上运行生成的代码。生成的代码免版权费,您可将其免费部署到面向客户的商用应用。
MATLAB Coder 成功案例
了解各行各业的工程师和科学家如何使用 MATLAB Coder 为应用生成 C/C++ 代码。
支持的工具箱和函数
MATLAB Coder 可从多种 MATLAB 语言功能生成代码,设计工程师基于这些功能开发算法以用作大型系统组件。该产品支持来自 MATLAB 以及配套工具箱的超过 2,500 个运算符和函数。
使用命名空间生成 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++ 预测代码。
桌面和云平台原型实现
使用 MATLAB Coder 或等效命令行函数为信号处理、计算机视觉、深度学习、控制系统或其他应用快速生成代码,然后针对硬件编译代码。
嵌入式和移动平台原型实现
将生成的代码手动集成到您的应用,以在各种目标设备上实现。针对 Raspberry Pi,借助 MATLAB Support Package for Raspberry Pi Hardware 自动化该过程。
从原型到生产
将 MATLAB Coder 和 Embedded Coder 结合使用,可在生成的代码中有效利用特定于处理器的内部函数,这些函数的执行速度快于标准 ANSI/ISO C/C++ 代码。
生成接口简单、易于集成的代码
生成的代码以自然的方式使用 C/C++ 类型,简化了集成到外部代码的过程。您可以将生成的代码作为源代码或库进行集成。您可以在 MATLAB 中引入受信任的 C/C++ 库或组件以执行保真度更高的测试,并可从生成的代码中自动调用它们。
优化所生成代码的性能
应用优化以在执行速度、内存使用量、可读性和可移植性之间进行权衡。使用分析工具确定瓶颈。要进一步提升性能,请生成多核 OpenMP 代码并调用 LAPACK、BLAS 和 FFTW 等优化库(如有)。
在集成前对生成的代码重用 MATLAB 测试
重用现有 MATLAB 测试以在交互式 MATLAB 环境中验证所生成代码的行为。使用 MATLAB 单元测试框架快速开发一组功能丰富的回归测试,以用于验证生成的 C/C++ 代码。
在 CPU 上加速算法
您可以从 MATLAB 代码以 MEX 函数的形式调用生成的代码以加速执行,不过性能将因 MATLAB 代码本身的特性而异。您可以分析所生成的 MEX 函数,以确定瓶颈并重点优化。
使用 GPU 加速算法
使用 Parallel Computing Toolbox 加速在 MATLAB 中运行的算法。使用 GPU Coder 生成可在现代 NVIDIA GPU 上运行的 CUDA 代码,以便进行加速或部署。