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