瑞恩•利文斯顿MathWorks
学习如何使用MATLAB Coder™生成面向对象的c++代码®类。
介绍
在这个演示中,我将使用MATLAB Coder从MATLAB算法生成生产c++代码。我们对c++代码生成做了很多改进,我想在这个视频中重点介绍这些。
我要用的MATLAB例子表示振荡系统。使用系统输出>显示Live Editor的图片
打开应用程序和设置
<打开App,在后台选择入口点>
我将使用MATLAB Coder应用程序从这些MATLAB类中生成一些c++类。今天我将展示的所有内容也可以通过使用codegen命令从命令行中获得。
入口点是effectOfDamping。我需要告诉MATLAB编码器的输入类型的函数需要。我们可以运行测试脚本runEffectOfDamping来自动检测我的类型。
检查问题
在生成c++代码之前,我还将使用相同的测试脚本检查运行时问题。<检查后台>中的问题
代码生成
我将生成一个DLL和c++来与我的团队共享这段代码。选择c++显示了在R2019b中添加的一个选项,称为“接口风格”,在这个选项中,你可以选择一个带有自由函数的接口,或者一个使用类和类上的方法的接口。我将选择“方法”来获得更习惯的c++,并将类命名为振荡接口,这样我们就可以在生成的代码中找到它。<现在生成代码>
查看生成的代码
为了探究生成的代码,让我们打开MATLAB Coder Report。在左边,我们看到输入的MATLAB代码和生成的c++代码。
封装类
让我们看看由“接口样式”选项产生的接口类。这个类从DLL导出,处理初始化和清理,并将入口点函数作为公共方法。任何MATLAB持久化和全局变量都映射到类属性,使生成的代码多实例化。
MATLAB类到c++类
从R2020a开始,MATLAB类被映射到c++类。R2020b增加了将MATLAB包映射到c++名称空间的能力。生成的c++类尽可能多地模仿MATLAB类的属性。
编码器:数组
在R2020a中,生成的代码使用coder::array类来管理动态分配的数组。Coder::array有一个类似于std::vector的接口,提供索引操作符重载,并确保异常安全的内存回收。
银和调试
让我们验证代码的行为。>我可以使用SIL调试来打开调试器中生成的代码。代码在一个单独的进程中启动,并在Visual Studio中打开该进程进行调试。MATLAB编码器将数据从脚本传递到生成的代码。
包
一旦我们对生成的代码的行为满意,我将为我的团队将代码打包到一个ZIP文件中。
之后,如果你想要从应用程序转换到命令行工作流以实现自动构建,选择“转换为脚本”选项以获得项目的脚本版本。
性能/兼容性
我们一直在不断改进MATLAB编码器。自R20xx以来,我们已经添加了许多MATLAB功金宝app能的支持,包括表,DateTime,时间表,以及机器学习和深度学习的支持。我们努力生成接近甚至超过手工代码的快速代码。
完成
如果您对从MATLAB代码生成c++代码感兴趣,我建议您查看一下MATLAB Coder R2020b中的c++新功能。综合起来,它们允许使用MATLAB Coder生成惯用的和异常安全的c++代码。本视频中使用的示例代码可在产品文档中找到。谢谢收看!
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。