MATLAB Coder

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

 

MATLAB Coder™ 可从 MATLAB® 代码生成 C 和 C++ 代码,适用于从桌面系统到嵌入式硬件等多种硬件平台。支持大多数MATLAB 代码和各种工具箱。您可以将生成的代码作为源代码、静态库或动态库集成到您的项目。生成的代码可读且可移植。您可以合并现有的 C 代码和库,以保证算法关键部分的高效能或高可信代码的重用。您还可以将生成的代码打包为 MEX 函数,用于在 MATLAB 环境中执行验证或加速。

Embedded Coder® 增强了 MATLAB Coder 在生产方面的用途,支持代码自定义、目标特定的优化、代码可追溯性以及软件在环 (SIL) 和处理器在环 (PIL) 验证。

要部署完整应用程序(包括用户界面),请使用 MATLAB Compiler SDK™。

开始:

随时随地运行

生成可读可移植的 ANSI C 源代码。部署免特许费代码

部署免特许费算法

使用任何 C 语言编译器在任何硬件上编译和运行生成的代码,包括从桌面系统到移动设备到嵌入式硬件。生成的代码免特许费——可免费部署在客户的商业应用中。

为矩阵乘法生成代码。

支持的工具箱和函数

MATLAB Coder 利用范围广泛的 MATLAB 语言特性来生成代码,设计工程师使用这些语言特性来开发作为大型系统组件的算法。这包括来自 MATLAB 以及配套工具箱 的超过 1900 个运算符和函数。

MATLAB 为代码生成提供的语言和工具箱支持。

硬件原型实现

通过将算法自动转换为 C 语言快速访问硬件。

桌面和云平台原型实现

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

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

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

通过将生成的代码与应用手动集成实现以任何设备为目标。使用针对 Raspberry Pi 的 MATLAB 支持包为 Raspberry Pi™ 自动化该过程。

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

从原型设计到生产

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

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

与软件集成

在软件环境中将 MATLAB 算法重用为 C 代码。

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

生成的代码自然而然地使用 C 类型,可简化与外部代码的集成。可以将生成的代码作为源代码或库进行集成。信任的 C 库或组件可以引入 MATLAB 以执行逼真度更高的测试,也可从生成的代码自动调用。

通过将 MATLAB Coder 和 Embedded Coder 结合使用生成的交互式可溯源性报告。

优化所生成代码的性能

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

通过调用 OpenMP 生成的代码的示例。

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

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

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

加速算法

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

在 CPU 上加速算法

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

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

使用 GPU 加速算法

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

Prototyping algorithms quickly on embedded and mobile platforms.

Move from Prototyping to Production

Use MATLAB Coder with Embedded Coder to generate code that takes advantage of processor-specific intrinsics that can execute faster than standard ANSI/ISO C/C++ code.

Profile execution time of the generated standalone code.

Integrate with Software

Reuse MATLAB algorithms as C/C++ code within your software environment.

Generate Code with Simple Interfaces That Are Easy to Integrate

Generated code uses C/C++ types in a natural way, simplifying integration with external code. You can integrate generated code as source code or libraries. Trusted C/C++ libraries or components can be brought into MATLAB for higher-fidelity testing and are automatically called from generated code as well.

Interactive traceability report using MATLAB Coder with Embedded Coder.

Optimize the Performance of Generated Code

Apply optimizations to adjust tradeoffs between execution speed, memory usage, readability, and portability. Use profiling tools to identify bottlenecks. To further boost performance, generate multicore OpenMP code and call optimized libraries such as LAPACK, BLAS, and FFTW when available.

Example of generated code with calls to OpenMP.

Reuse MATLAB Tests on Generated Code Prior to Integration

Reuse existing MATLAB tests to verify the behavior of generated code in the interactive MATLAB environment. Use the MATLAB unit test framework to quickly develop a rich set of regression tests that can be used to verify the generated C/C++ code.

Verifying behavior of generated code before integrating with your application.

Accelerate Algorithms

Generate C/C++ code and compile it for use inside MATLAB.

Accelerate Algorithms on CPUs

You can call generated code as MEX functions from your MATLAB code to speed execution, though performance will vary depending on the nature of your MATLAB code. You can profile generated MEX functions to identify bottlenecks and focus your optimization efforts.

Profile MEX functions to identify bottlenecks in performance.

Accelerate Algorithms Using GPUs

Use Parallel Computing Toolbox™ to accelerate algorithms running in MATLAB. Use GPU Coder to generate CUDA code for acceleration or deployment that runs on any modern NVIDIA GPU.

通过 MATLAB 生成 C 代码的乐趣

了解有关使用 MATLAB Coder 的提示和最佳实践,并阅读 Delphi、Baker Hughes、iSonea 和 dorsaVi 等公司所生成代码的成功应用。