在VS 2005中使用VC7.0来调用matlab7.0进行科学计算
1、新建一个空MFC单文档项目
2、在下拉菜单工具中点击选项,打开选项窗口
2、在选项窗口中,选择项目-〉VC++目录,在显示目录中选择包含文件,添加matlab路径


author:bcboycn e-mail: liangzh.cug@gmail.com
VC 与专业结合学习笔记
同样的方法添加库文件目录如下图所示
4、在项目中添加lib文件(这个地方与原来的VC6.0不太一样),点选项目-〉属性菜单
在链接器中的输入子栏中,改变附加依赖项的值如下
这样就设置好了matlab的基本调用条件。
5、在视图文档的头文件中添加#include "engine.h"
6、新建一个LButtonDown消息,添加以下程序:
void Cvc_study2View::OnLButtonDown(UINT nFlags, CPoint point)
{
Engine *ep;
mxArray *T = NULL, *result = NULL;
double time[10] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 };
if (!(ep = engOpen("\0"))) {
AfxMessageBox("Can't start MATLAB engine!");
return;
}
/*
* Create a variable for our data
*/
T = mxCreateDoubleMatrix(1, 10, mxREAL);
memcpy((void *)mxGetPr(T), (void *)time, sizeof(time));
/*
* Place the variable T into the MATLAB workspace
author:bcboycn e-mail: liangzh.cug@gmail.com
VC 与专业结合学习笔记
*/
engPutVariable(ep, "T", T);
/*
* Evaluate a function of time, distance = (1/2)g.*t.^2
* (g is the acceleration due to gravity)
*/
engEvalString(ep, "D = .5.*(-9.8).*T.^2;");
/*
* Plot the result
*/
engEvalString(ep, "plot(T,D);");
AfxMessageBox("OK...");
engClose(ep);
exit(0);
CView::OnLButtonDown(nFlags, point);
}
7、运行结果
author:bcboycn e-mail: liangzh.cug@gmail.com
VC 与专业结合学习笔记
[备注]
部分程序片断是选用matlab7.0例程engdemo.c;另外为了方便查找,将文献[2]中的相关函数粘贴如下:
其中最为关键的一个函数是:
[参考资料]
1、张浩平,付媛媛;VC++调用Matlab实现三维欧拉反褶积运算;物探化探计算技术;2006年5月,第28卷,第2期;
2、刘志俭等编著;Matlab应用程序接口用户指南;科学出版社;2000年8月;
author:bcboycn e-mail: liangzh.cug@gmail.com