C++ 2010 与MATLAB2014a混合编程教程(1)
2016-01-10 22:13
633 查看
1、按照点击打开链接 里面的方法设置好环境
2、在MATLAB中定义函数test.m
3、定义.cpp 文件,编译运行即可
2、在MATLAB中定义函数test.m
function s =test(a,b) s=a+b; end
3、定义.cpp 文件,编译运行即可
/** * @author 程晓 * @date 创建时间:2016/01/10 * @version MATLAB2014a + Microsoft Visual 2010 */ #include "stdafx.h" #include <iostream> #include <math.h> #include <string> #include <engine.h>//添加必要的头文件;以下4个都是MATLAB和C++混合编程常用的头文件 #include <matrix.h> #include <mat.h> #include <mex.h> using namespace std; int main(int argc, char** argv) { //在这部之前设置了一些环境,具体参考 /*http ://www.doc88.com/p-458271665677.html */ Engine* m_pEngine; //调用MATLAB引擎 m_pEngine = engOpen(NULL); //打开MATLAB简易窗口 if( m_pEngine == NULL ) { cout<<"error!"<<endl; exit(-1); } //在简易MATLAB命令窗口可以用pdw查看MATLAB当前工作路径将MATLAB路径设为m文件所在位置,注意路径的表达 engEvalString (m_pEngine,"cd C:\\Users\\Administrator\\Documents\\MATLAB"); double aval[]={1},bval[]={2};//aval,bval 是C++里面的变量 mxArray *a=mxCreateDoubleMatrix(1,1,mxREAL);//定义a,b两个指针,也是在C++里面的变量,但是是mxarrays类型,可以和MATLAB传递数值 mxArray *b=mxCreateDoubleMatrix(1,1,mxREAL); //mxSetPr(a ,&aval);//不要使用,win7下会有报错 //mxSetPr(b ,&bval); memcpy(mxGetPr(a), aval, 1*sizeof(double)); //将数组aval复制到mxarray数组a中。作用:转为了可以向MATLAB传递的数据类型 memcpy(mxGetPr(b), bval, 1*sizeof(double)); engPutVariable(m_pEngine,"a",a);//正式将C++里面的数值定义在MATLAB变量空间里面,双引号内的就是MATLAB变量空间里面的变量名 engPutVariable(m_pEngine,"b",b); engEvalString (m_pEngine,"s=test(a,b)");//调用MATLAB自定义函数 engEvalString (m_pEngine,"x=0:0.01:5*3.14;y=sin(x);plot(x,y)");//直接在C++里面写MATLAB代码 mxArray *s=engGetVariable(m_pEngine,"s");//定义一个可以接收从MATLAB传递给C++数值的数据类型 double c=*mxGetPr(s);//接收MATLAB传递给C++数值 cout<<c<<endl; mxDestroyArray(a); mxDestroyArray(b); mxDestroyArray(s);//这些数据都是一个中间变量,最后我们销毁它们 system("pause"); engClose(m_pEngine);//程序的最后,把MATLAB也关了 return 0; }
相关文章推荐
- 怎样在matlab中添加外部软件包
- Matlab——通信原理小程序
- matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。
- Matlab多项式回归实现
- 搜索边缘链表算法之Matlab实现
- matlab 3D sphere err bar 在3D的球上显示对应点的误差
- matlab做偏最小二乘回归
- matlab kmeans 函数
- 让书写的Matlab代码运行更快 Recipes for Faster Matlab Code
- Matlab画统计折线
- Hessian矩阵判定极值之MATLAB实现符号解
- 在线matlab lingo ruty r python go
- Matlab 生成任意扇形区域
- 层次分析法(AHP)的Matlab实现
- Matlab—matlab的下载与安装
- Caffe + Ubuntu 15.10 64bit + CUDA 7.5 +Matlab2014a
- matlab 下载
- 蒙特卡洛法之MATLAB实现
- matlab图像处理 Introduction to MATLAB
- utilities(matlab)—— mat2imgcell