使用 MATLAB Coder 进行代码生成的概述
您可以使用 MATLAB® Coder™ 软件从您的 MATLAB 代码生成 C/C++ 代码,作为源代码、静态库、动态链接库或可执行文件。生成的代码可以嵌入到 MATLAB 环境之外的应用程序中。
您还可以使用 MATLAB Coder 来生成 C/C++MATLAB 可执行文件 (MEX) 函数,该函数是为 MATLAB 加速而设计的。由于 C/C++ 可能比 MATLAB 代码更快,因此您可以在 MATLAB 环境中生成和使用加速的 MEX 函数来提高 MATLAB 代码的执行速度。
从 MATLAB 代码生成可使用的、优化的 C/C++ 代码可能需要进行多轮故障排除和代码生成。
编写 MATLAB 代码以进行代码生成
生成 C/C++ 代码时,代码生成器将动态定型的 MATLAB 代码转换为静态定型的 C/C++ 代码。在动态定型语言中,变量的类和大小可以在运行时改变。由于 C 和 C++ 是静态类型语言,因此代码生成器必须在您生成代码时确定变量类型。您在代码生成过程中遇到的许多错误都发生在代码生成器尝试将动态定型的 MATLAB 变量转换为静态定型的 C/C++ 变量时。当您为代码生成编写 MATLAB 代码时,遵循以下最佳做法可避免最常见的代码生成错误:
在使用之前,定义所有变量的类和大小。
在索引之前预分配数组。
验证对 MATLAB 函数和语言功能的代码生成支持。
有关这些最佳做法的其他详细信息,请参阅为 C/C++ 代码生成定义变量的最佳做法、代码生成的数据定义注意事项和C/C++ 代码生成支持的函数和对象。
代码生成工作流
在开始之前,请安装支持的编译器。有关支持的编译器的最新列表,请参阅支持和兼容的编译器。
生成代码时,请按照以下步骤操作:
确定入口函数并检查 MATLAB 代码 - 通过选择一个或多个入口函数并检查您的 MATLAB 代码是否已准备好进行代码生成,为代码生成做好准备。
指定入口函数输入的类型 - 如果入口函数有输入,请指定这些输入的类和大小。您可以在 MATLAB Coder 中、命令行或入口函数中指定输入类型。
使用 MEX 函数检查 MATLAB 代码中的问题 - 在生成独立的 C/C++ 代码或加速的 MEX 函数之前,请检查您的 MATLAB 代码中是否存在问题。此步骤使您能够检测和修复在生成的代码中更难检测到的问题。
优化生成的 C/C++ 和 MEX 代码 - 您可以选择优化生成代码的执行速度或内存使用量。在实现优化策略后,重新检查您的 MATLAB Coder 代码中的问题。
生成 C/C++ 代码 - 生成独立的 C/C++ 代码或加速的 MEX 函数。