Matlab函数转c++
利用MATLAB coder将.m
文件转.cpp
的方法
首先看一下要转换的代码(一个function
文件),非常简单,只是用于测试,实际使用不会这么简单,因为还会涉及到:代码的优化
,以及变量类型声明
,变量的维度动态变化
等问题,这些都C++和MATLAB严重冲突的地方。
function sum = myadd(x,y)
sum = x+y;
1. 安装编译器
>> mex -setup
MEX 配置为使用 'MinGW64 Compiler (C)' 以进行 C 语言编译。
要选择不同的语言,请从以下选项中选择一种命令:
mex -setup C++
mex -setup FORTRAN
如果已经安装好可以跳过,如果没有安装好matlab会弹出安装下载链接,根据提示点击链接即可!
2. 安装matlab coder app
点击右上角附件功能
输入coder下载安装(听说破解版MATLAB似乎无法安装,试一下吧)
3. 启动matlab coder app
>> coder
4. 添加函数开始转换
在此之前,为了不必要的麻烦,请大家将当前文件夹改为所要转换函数所在的文件夹。
4.1 添加函数
重点:要添加function而不是脚本!
4.2 声明变量类型
用命令在命令行声明或者手动选择
4.3 转换测试
如果有错误,根据对应的错误进行修改
4.4 设置一些东西
如果不懂,就按默认就好了,选一下要转换的类型
4.5 查看文件和报告
重点关注同名.cpp
和同名.h
;main.cpp、main.h是测试文件,可以忽略,也可以看一下,是官方给的一个调用生成函数的例子,不会参与最终的代码!其他的文件按照需要进行选择,我这里只保留了同名.cpp和同名.h。
5. 在c++编译器中进行测试
我用的是VS2013,这不是MATLAB的重点,需要大家了解C++的代码,我仅仅给出改造的测试文件(我的B站视频有这部分的录屏
):
//这是头文件.h
/*
* Academic License - for use in teaching, academic research, and meeting
* course requirements at degree granting institutions only. Not for
* government, commercial, or other organizational use.
*
* myadd.h
*
* Code generation for function 'myadd'
*
*/
#ifndef MYADD_H
#define MYADD_H
/* Include files */
#include <cstddef>
#include <cstdlib>
/* Function Declarations */
extern double myadd(double a, double b);
#endif
/* End of code generation (myadd.h) */
//这是源文件.cpp
#include "iostream"
#include "myadd.h"
using namespace std;
int main(void)
{
double result;
double x = 1;
double y = 2;
result = myadd(x,y);
cout<<result<<endl;
cout << "按任意键继续……";
cin.clear();//清空缓存区
cin.sync();
cin.get();
/* 这是出现“无法查找或打开 PDB 文件”的解决方案,
目前本机还没有更好的方法,但是大家不一定会出现这个问题
以上四行可以换成,system("pause");但是不推荐
*/
}
/* Function Definitions */
double myadd(double a, double b)
{
return a + b;
}
/* End of code generation (myadd.cpp) */
最后,文字稿写的相对概括,如果不明白可以看我的B站视频(主页找找)。