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