从MATLAB代码生成C代码
从MATLAB中生成可读和可移植的C和c++代码®代码,包括超过1200个功能,用于从图像处理和计算机视觉到高级DSP和通信系统开发的应用程序,使用MATLAB Coder™。
本视频展示了通过使用MATLAB设计的卡尔曼滤波器生成C代码的工作流程。
MATLAB Coder从你的MATLAB算法生成可读和可移植的C代码。这种自动化的方法加快了您的设计工作流程,并消除了手工翻译过程中引入的编码错误。
MATLAB Coder支持大多数MATLAB语言和1200多个用于从图像处理和计算机视觉到高级DSP和通信系统开发的广泛工具箱的功能。为了说明工作流程,我将使用卡尔曼滤波器作为一个示例数值算法。
您在这里看到的卡尔曼滤波DOTM文件与MATLAB Coder附带的版本相比略有修改。此外,我有一个简单的测试台架,它获取输入,运行卡尔曼滤波器,并在图上绘制它。虽然我有两个文件,但我只对为算法生成代码感兴趣。
回到算法上来,注意我预先分配了像A和h这样的矩阵。这是有助于生成更好代码的技巧之一。首先,确保在文件的顶部有百分数磅的可信pragma。pragma支持在代码分析器中进行额外的共生成检查,这是MATLAB编辑器中内置的一个工具。
看一下右上角的代码分析器,我们看到它标记了一些东西。第一件事是我们需要用分号来完成语句。我们来解决这个问题。
这里的括号是不必要的。所以我们可以删除它。第三,MATLAB Coder目前不支持try-catch结构。我们先把它去掉。
在修复这些问题之后,代码分析器是绿色的,所以我们可以开始了。从这里开始,让我们启动MATLAB Coder应用程序。在这里,在联产分类下。
这是MATLAB Coder应用,我们要做的第一件事是告诉它我们要为哪个文件生成代码。从这里开始,代码生成准备工具进行初始评估并标记不支持的功能等内容。如果你没有问题,你实际上不会看到这个屏幕。但在本例中,该工具告诉我们,热电联产不支持导入数据。
在设计算法时,我们编写这段代码是为了进行调试。由于我们不需要为这个诊断代码生成代码,我们可以将它注释掉,然后进入下一步。现在我们需要定义输入类型。在使用C代码时,我们需要显式地指定输入的数据类型和大小。
要做到这一点,最简单的方法是使用测试台架来练习我们想要为其生成代码的函数。在这种情况下,这是我之前展示给你们的卡尔曼滤波器测试台架。如果我们点击外部定义的输入类型,MATLAB Coder将运行测试台并推断输入数据类型和大小。
它计算出我们的输入数据类型是一个类型为double的2乘1数组。所以我们接受。如果您愿意,还可以自己显式地设置数据类型和大小。进入下一步,MATLAB Coder将在生成的代码中检查运行时错误。
它们将执行数组边界检查和维度检查等操作,以查找违反内存完整性的情况。在这种情况下,一切都顺利通过。所以我们可以继续。
现在我们准备好生成代码了。对于我们的输出,我们可以生成源代码、MEX文件、静态或动态库或可执行文件。为了简单起见,让我们继续生成源代码。我们成功地生成了代码。
我启用了在生成的C代码中插入MATLAB代码作为注释的选项,以便更容易追溯。这里还有一个头文件。在这一点上,你可以做几件事。当然,你可以创建一个MEX文件,并将其带回MATLAB中,以达到加速的目的。您可以调优与速度、内存使用和代码外观相关的一些生成选项,然后重新生成代码。您还可以进行一些代码验证。
当然,您可以简单地导出生成的代码并在其他地方使用它。这是一个从MATLAB代码生成C代码的快速概述。查看我们的文档,了解更多示例和其他细节。
相关产品2022世界杯八强谁会赢?
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。