您的位置:首页 > 编程语言 > MATLAB

一步步学如何使用VC调用matlab engine编程

2009-08-06 17:27 281 查看
   

这里不再介绍
VC


matlab

的各自优劣。直接给出一个最简单的例子。跟着文中步骤一步步来做,肯定会成功的。

      

废话少说。

      
Matlab Engine

采用
Client/Server

的方式,通过
ActivcX

通道和
Matlab

接口来实现在
VC

编程环境中直接调用
matlab

中的指令。调用使用的函数是:
engEvalSting

。后面将讲到此函数的使用方法。

      

下面是完整的步骤。如果是第一次使用,则要设置一下
VC

的编程环境中的
include


lib

的路径指向。假设
matlab

安装在
c

盘默认目录,则如下设置:

       



 
 
 
 



 
      

注意:上面添加路径的两步只设置一次就可以了。下面来进行
VC

编程。

      

首先,运行
VC

向导,新建一个工程文件如下:

 
 
 
 
 
      

接下来选择一个对话框程序作为简单示例:

 
 
 



      

点击
”Finish”

可以完成自动生成一个工程框架。

  
4000
    

下面来设计界面,我们来简单的添加一个按钮并为其添加响应函数:

 
 
 
 
 
      

生成的按钮响应函数:

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%D4/blog/item/88917e01d5925006738da578.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息