Matlab程序转为C++代码
实验室项目需要,将Matlab程序转为C++代码的过程记录下来,方便后续查找和别人使用。
前言
- Matlab版本为R2019b,VS版本为2017;
- 并不是所有的Matlab函数都支持转为C++代码的,如果存在这样的函数需要自己写代码实现这样的功能
- 只支持Matlab函数生成,因此需要将脚本文件转化为函数进行生成
C++代码生成
1.编写好对应算法的m文件,将脚本转化为函数格式,输出需要的变量,以如下程序为例;
2.在Matlab的App模块中找到如下图所示的Matlab Coder模块;
3.点击Matlab Coder模块,选择需要转换的M文件;
4.点击Next,选择调用了转换M文件的程序(不是需要转化的程序,如下所示,test.m,几行代码即可),可以选择自动定义变量的数据类型、大小等,也可以手动定义;
5.点击Next,如果此时有无法转化的Matlab自带的函数,会报错提示无法转化,需要将调用的函数重新编写;
6.如果不存在无法转化的函数,则会跳出以下界面,继续选择调用了转换M文件的程序(不是需要转化的程序),点击Check for Issues,Matlab会自动检测代码的正确性,三个全绿即可通过(如果确保代码没有问题,第三个提示错误也可以通过,前两个正确即可);
7.点击Next,这一步非常重要,前四项按照需要进行选择,再硬件选择一栏需要选择好移植的硬件,可以选择各种硬件,如果没有满足要求的选项则需要选择None-select device below,然后会出现Device选项,按照需要进行选择,我们的项目需求为Intel芯片的win64电脑(Inetl和AMD的芯片需要区别选择),之后在Toolchain栏选择编译工具,本项目选择VS2017进行编译(VS不同版本对于生成的代码格式要求不同,需要认真选择),最后点击Generate生成所需代码;
8.生成的文件如下图,项目所需的app文件和h文件已经生成,按照提示就可以找到所需的文件;
9.Matalb会给出一个生成文件调用的示例文件,在examples文件夹中,如下图,可按照示例文件格式进行代码编写
后记
在实际的项目中,会调用需要比较复杂的Matlab函数,此时会需要较多的dll文件,在VS中建立项目会发现dll文件缺失或者找不到的现象,这是因为Matlab在生成C项目文件时没有将需要的dll文件添加过来,需要的dll文件在 D:\Softwares\MatlabR2019b\bin\win64 路径下,可以用everything工具进行查找,具体有两种解决方法:
- 直接将所有的dll文件复制过来,这会使得项目太大,不太可取
- 直接运行VS的项目文档,此时VS会报缺失的dll文件,直接在上述文件夹下查找然后添加到项目中即可