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