我是靠谱客的博主 粗心芝麻,最近开发中收集的这篇文章主要介绍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>externinclude(在Matlab的安装路径下);再选择下拉列表中的 Library Files,添加路径:<matlab>extern libwin32Microsoft(在Matlab的安装路径下,但是在我查看资料的时候看到很多是<matlab>extern libwin32Microsoftmsvc60这个路径,但是我用的是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的环境独立运行。

最后

以上就是粗心芝麻为你收集整理的VC++与Matlab混合编程之一:调用Matlab引擎的全部内容,希望文章能够帮你解决VC++与Matlab混合编程之一:调用Matlab引擎所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部