加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C 语言调用Matlab程序例子

(2009-04-19 09:56:13)
标签:

杂谈

网上查到的都是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));//将数组 复制到 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


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有