瑞恩•利文斯顿MathWorks
学习如何使用MATLAB Coder™生成面向对象的c++代码®课程。
介绍
在这个演示中,我将使用MATLAB Coder从MATLAB算法生成生产c++代码。我们对c++代码生成做了很多改进,我想在这个视频中重点介绍这些。
Matlab示例我将使用代表振荡系统。<显示有系统输出的Live Editor的图片>
打开应用程序和设置
<打开App,在后台选择入口点>
我将使用MATLAB编码器应用程序从这些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中,生成的代码使用编码器:: Array类来管理动态分配的数组。编码器:: Array有一个相似的STD :: Vector,提供索引操作员过载,并确保异常安全的内存释放。
银和调试
让我们验证我们代码的行为。使用嵌入式编码器,<选择测试脚本并启用调试>我可以使用SIL调试以在调试器中打开生成的代码。<在后台运行>代码在一个单独的进程中启动,在Visual Studio中打开该过程进行调试。MATLAB编码器将数据从脚本传递给生成的代码。
包裹
一旦我们对生成的代码的行为感到满意,我将在zip文件中打包我的团队的代码。
稍后,如果要从应用从应用程序转换到自动构建的命令行工作流程,请选择“转换为脚本”选项以获取项目的脚本版本。
性能/兼容性
我们一直在不断改进MATLAB编码器。自R20xx以来,我们已经添加了许多MATLAB功金宝app能的支持,包括表,DateTime,时间表,以及机器学习和深度学习的支持。我们努力生成接近甚至超过手工代码的快速代码。
完成
如果您对从MATLAB代码生成c++代码感兴趣,我建议您查看一下MATLAB Coder R2020b中的c++新功能。综合起来,它们允许使用MATLAB Coder生成惯用的和异常安全的c++代码。本视频中使用的示例代码可在产品文档中找到。谢谢收看!
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。