MATLAB生成C/C++代码的流程与经验

最近的项目要求要用模型化开发,用MATLAB编码,转换成可靠的C代码,移入项目。这里介绍一下MATLAB生成代码的过程,以及一些tips。

整体流程

1. 我用的版本是MATLAB R2020b,在菜单栏的APP中,可以找到MATLAB Coder

MATLAB生成C/C++代码的流程与经验_第1张图片

2. 你要转换的m脚本,必须是function,所以要把需要转换C代码的程序,放入一个function脚本里,将function名字,输入进去。

MATLAB生成C/C++代码的流程与经验_第2张图片

3. 随后,输入你调用这些function的脚本,MATLAB会根据这个脚本,自动辨识各个函数入参的类型。

MATLAB生成C/C++代码的流程与经验_第3张图片

 入参可以是类、可以是结构体。需要注意的是,由于要转换成C代码,所以你的入参必须长度、大小需要固定。

MATLAB生成C/C++代码的流程与经验_第4张图片

4. 检查你写的代码是否可以转成C代码,可以参照错误列表进行修改。刚开始使用这功能的时候肯定一堆错误,因为有些Matlab编码的语句是无法转成C的,所以自己修改一遍!以后再用就方便多啦。

MATLAB生成C/C++代码的流程与经验_第5张图片

5. 最后,可以配置生成代码的类型,目标硬件,设备等等信息。我这个是移植到ROS环境下的,所以用Intel X86-64位的如下配置。

MATLAB生成C/C++代码的流程与经验_第6张图片

6. 看你工程的大小,我是一口气生成了159个文件,往工程里一丢,简单写一个Main函数,调用接口函数,编译直接通过,总之感觉开发起来很方便!

一些Tips与坑

1. 入参多的情况下,一定要建一个类把入参都合并在一起,转成C的时候会转成一个结构体。结构体变量啥的,都要提前赋值好大小。如果不赋值大小,MATLAB能运行,转C的时候就一顿报错。 

MATLAB生成C/C++代码的流程与经验_第7张图片

2.  MATLAB中有很多已有的工具箱,都支持转C代码,比如我工程中用的混合A*,RS曲线等等,都可以直接生成C代码,不用自己从头写:

MATLAB生成C/C++代码的流程与经验_第8张图片

3. 工具箱的功能如果不符合自己的需求,可以把工具箱对应的脚本拖到自己的工程里,改个名重写。一样可以生成C代码

4. =。=想到啥再补充,over!

你可能感兴趣的:(MATLAB,matlab)