VC++与Matlab混合编程之一:调用Matlab引擎

    在VC中调用MATLAB的,总结有以下几种方法:1、是调用Matlab引擎;2、是调用Matlab中M函数转化成的dll文件;3、调用Matlab中M函数转化成c语言的函数。

    本节之讲解方法1,因为方法1最简单,只要配置好VC的相关设置就可以了。

 下面是自己的实践过程:

 一、设置VC相关属性。

    (1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for下拉列表中选择Include Files,添加路径:<matlab>\extern\include(在Matlab的安装路径下);再选择下拉列表中的 Library Files,添加路径:<matlab>\extern\ lib\win32\Microsoft(在Matlab的安装路径下,但是在我查看资料的时候看到很多是<matlab>\extern\ lib\win32\Microsoft\msvc60这个路径,但是我用的是MatlabR2009a,或许这里设置有点区别)。看资料说编译环境或许只需设置一次,但是我在设置的时候每次都要设置。

    (2)添加库文件: 通过菜单 Projects|settings,进入 Link 页面,在 Object/Library Modules 框中,添加库文件名:libmx.lib 、libmat.lib 、libeng.lib。每个新的工程文件都要单独添加库文件。

 二、在VC中通过MATLAB引擎调用Matlab函数命令:

          现在以画一个正弦曲线的图为例。

         1、 新建一个MFC程序,命名Test,基于对话框。

          
        2、在Testdlg.cpp中加入头文件:

#include "engine.h"
#include <stdlib.h>

        3、添加botton  Test,并添加点击命令,加入代码如下:

void CTestDlg::OnTest()
{
 // TODO: Add your control notification handler code here
 Engine *ep;
 
 if (!(ep = engOpen(NULL))) //打开Matlab引擎

 {              

     MessageBox ("Can't start MATLAB engine", MB_OK);

     exit(-1);

 } 

 engSetVisible(ep, 0);
 
 engEvalString(ep,"x=0:0.001:2*pi;");
 
 engEvalString(ep,"y=sin(x);");     
 
 engEvalString(ep,"plot(x,y)");//会显示出图
}

        4、运行程序,单击Test按钮,运行结果如下图:

        

至此,利用VC调用Matlab引擎结束,可以运行Matlab中的各种函数,作图等。此种方法的特点是,非常简单和方便,要求运行程序的电脑必须装有Matlab软件,因此也具有不能脱离Matlab环境的弱点。

备注:此次测试是基于Visual C++6.0和Matlab R2009a的环境。

上面例子是VC和Matlab的混合编程的一个简单应用,在实际的数值计算,控制系统开发等工程应用中,可以很好的利用VC和Matlab的混合编程技术,从而简化应用程序的开发工作量。

下一篇文章将推出第二种方法:利用Matlab生成DLL文件,然后用VC调用DLL文件,此种方法是将Matlab写的函数封装在动态链接库里面,然后用VC调用动态链接库,优点是程序的运行可以脱离Matlab的环境独立运行。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值