Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
普通会员
注册日期: 2008-02-29
年龄: 44
帖子: 92
声望力: 19 ![]() |
![]()
这里不再介绍VC和matlab的各自优劣。直接给出一个最简单的例子。跟着文中步骤一步步来做,肯定会成功的。 废话少说。
Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。调用使用的函数是:engEvalSting。后面将讲到此函数的使用方法。 下面是完整的步骤。如果是第一次使用,则要设置一下VC的编程环境中的include和lib的路径指向。假设matlab安装在c盘默认目录,则如下设置: ![]() ![]() 注意:上面添加路径的两步只设置一次就可以了。下面来进行VC编程。 首先,运行VC向导,新建一个工程文件如下: 接下来选择一个对话框程序作为简单示例: ![]() 点击”Finish”可以完成自动生成一个工程框架。 下面来设计界面,我们来简单的添加一个按钮并为其添加响应函数: 生成的按钮响应函数: void CVc_matlab_engineDlg::OnButton1() { } 好了至此VC部分框架已经搭好。下面来进入调用engine部分。 在编写函数调用engine之前,首先要设置一下链接库(每个工程都要设置一次的,而前面的路径设置不必)。 在Object\Library modules文本框中添加: libmx.lib libmat.lib libeng.lib 接下来,在StdAfx.h 文件头中加入: #include "engine.h" 并在按钮响应函数中输入: void CVc_matlab_engineDlg::OnButton1() { Engine *ep; if(!(ep=engOpen(NULL))) ::MessageBox(NULL,"Can' start the MATLAB engine","VC调用matlab engine示例程序",MB_OK); engEvalString(ep,"x=0:0.05:2*pi;y=sin(x);"); engEvalString(ep,"subplot(2,1,1);plot(x,y);"); engEvalString(ep,"title('画正弦线');"); engEvalString(ep,"subplot(2,1,2);load clown;imshow(X,map);title('显示matlab自带小丑图像')"); ::MessageBox(NULL,"俺任意键继续","VC调用matlab engine示例程序 by bugzhao",MB_OK); engClose(ep); } 到此,这个程序已经可以运行了!很简单吧!不过这类程序的运行依赖于matlab,速度无法保证哦。等这类程序熟练以后,大家可以再去试试mex、dll和com组件调用等更加高级的内容。 程序执行界面: ![]() 点击按钮后调用matlab生成的正弦线和画出的matlab自带的小丑图像: 可以看出关键的语句就是:engEvalString。其用法也很简单。到此程序的环境设置、编写代码和执行都给大家演示完了。希望大家有所收获。详细的讲解,还是去看matlab的帮助吧:) ![]() ![]() ![]() ![]() http://hi.baidu.com/%C1%F5%D3%E6%E9%...6738da578.html 一学亦会 |
![]() |
![]() |