采用matlab开发算法,可以快速开发、测试算法,但存在两个问题
- 算法效率不高
- 不利于开发独立软件
本文描述一种matlab算法移植C++的方法
一、MATLAB开发者需要做的
1、编辑一个简单的matlab函数
function y = fun_add(a,b)
y = a+b;
2、打开coder
输入入口函数,fun_add. Next
3、定义函数参数类型
4、检查问题
这一步主要用来检查要转换的函数是否存在某些内置函数或者语法无法转换,如果失败,需要手动修改和调整代码。
需要注意的是,有必要修改下setting,以便生成的代码符合C/C++标准
顺利通过检查后,是这样,说明目前的代码是支持生成C/C++的。Next
5、生成代码和库
这里有几个选项需要注意:
- Build Type:通常建议选择 Dynamic Library,调用比较方便
- Output file name: 建议采用和接口函数一致的名称
- Language:建议选择C++,生成的代码比较清晰
- Interface style:这个例子里,我选择的是Methods,就是通过类的对象调用,这里需要输入一个类
- Hardware Board:代码运行的硬件环境,通常选择本机即可,其他的看目标设备的cpu类型
- Toolchain:选择编译器和编译环境,我这里选额vc2019 v16|nmake为例。
6、生成,点击Generate,成功之后,Next
7、打包,点击上图中的package,得到打包后的文件。
这里对需要用到的文件做一个说明
- .h文件是生成的C++头文件,需要添加到后面建立的VC项目的头文件里
- .dll是动态链接库文件,需要复制到编译后的C++的exe文件同一途径下
- .lib是库文件,需要复制到VC的代码目录里
二、C++开发者需要做的
1、建立控制台C++项目
2、复制头文件和lib文件到VC项目
3、复制dll文件到exe生成的目录
4、添加头文件到项目
5、main函数所在源文件添加宏指令
红框的两行分别是加载lib库文件和引用头文件,这里注意,只需要引用MyCalc.h这一个头文件即可
6、调用函数
7、查看结果
三、最后的结果
在release模式下重新生成exe,把exe和dll放一起就可以直接运行了,完全脱离matlab。
只要按照本文的步骤,一步一步来,基本不会失败。参数中涉及到向量和矩阵的,调用略微复杂些,有空,作者再写一个帖子。