最近做一个小项目,要用vs2008 调用matlab 2013a引擎 构建神经网络来做一些判断。
粗略浏览了下matlab的使用说明,然后就去网站找c++调用matlab的例子,参考了http://blog.sina.com.cn/s/blog_6163bdeb0100qd49.html,过程如下:
1、包含matlab的头文件
工具-->选项-->左侧项目和解决方案-->VC++目录-->右上角选择【包含文件】,新增一行D:\Program Files\MATLAB\R2013a\extern\include
2、包含matlab库文件
同一个地方右上角选择库文件,新增一行
D:\Program Files\MATLAB\R2013a\extern\lib\win32\microsoft
3、项目属性里设置需要包含的lib文件 libmx.lib libmat.lib libeng.lib
4、系统环境变量增加d:\Program Files\MATLAB\R2013a\bin\win32
5、测试代码
// junkFilter_matlab.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "engine.h"
int _tmain(int argc, _TCHAR* argv[])
{
Engine* ep;
if(!(ep=engOpen("\0")))
{
printf("Matlab引擎启动失败!");
}
printf("成功启动Matlab引擎,下面绘制方格图!");
engSetVisible(ep,0); //隐藏Matlab窗口
engEvalString(ep,"[x,y]=meshgrid([-2:.4:2]);");
engEvalString(ep,"Z=x.*exp(-x.^2-y.^2);");
engEvalString(ep,"fh=figure('Position',[300 400 400 300],'Color','w');");
engEvalString(ep,"ah=axes('Color',[.8,.8,.8],'XTick',[-2 -1 0 1 2],'YTick',[-2 -1 0 1 2]);");
engEvalString(ep,"sh=surface('XData',x,'YData',y,'ZData',Z,'FaceColor',get(ah,'Color')+0.15,'EdgeColor','k','Marker','o','MarkerFaceColor',[.5 1 .75]);");
printf("成功绘制方格图!");
engClose(ep);
return 0;
}