网上查到的都是Matlab调用C语言的例子,而对C语言调用matlab的例子介绍的很少,好不容易搜索到一个C语言调用matlab的例子,大家共享。
//调用MATLAB函数绘制函数曲线 #include <iostream.h>
#include <math.h>
#include "engine.h" //添加MATLAB引擎头文件 #include <string.h>
int main()
{
//定义x,y数组并赋初值
const int N=20; double x[N],y[N]; for (int i=0;i<N; i++)
{
x[i]=i+1;
y[i]=x[i]*x[i];
}
Engine *ep; //定义MATLAB引擎指针变量
if(!(ep=engOpen(NULL))) //打开MATLAB引擎
{
cout<<"can't start MATLAB engine!"<<endl;
exit(1);
} //利用MATLAB API mxCreateDoubleMatrix函数生成矩阵,即申请空间,MATLAB引擎中使用mxArray类型数据
mxArray *xx=mxCreateDoubleMatrix(1,N,mxREAL);//1行N列,mxREAL为实双精度矩阵 mxArray *yy=mxCreateDoubleMatrix(1,N,mxREAL); //mxGetPr获取指向输入、输出矩阵数据的指针 memcpy(mxGetPr(xx),x,N*sizeof(double));//将数组 x 复制到 mxarray 数组 xx 中,即给xx数组赋值
memcpy(mxGetPr(yy),y,N*sizeof(double));
engPutVariable(ep,"xx",xx);//将 mxArray 数组 xx 写入到 Matlab 工作空间,命名为 xx
engPutVariable(ep,"yy",yy);
engString(ep,"plot(xx,yy)");//通过引擎调用MATLAB中plot(x,y)函数,绘制函数曲线 mxDestroyArray(xx); //释放内存
mxDestroyArray(yy);//释放内存
cout<<"press any key to exit!"<<endl;
cin.get();
engClose(ep); return 0;
}
引自:http://www.cnblogs.com/bobyguo/articles/1272684.html
|