Vc++6.0调用matlab的数学库函数

合集下载

vs调用matlab完整步骤

vs调用matlab完整步骤

vs调⽤matlab完整步骤

1.安装TDM-GCC-64 配置好环境变量

2.使⽤matlab安装包,安装Microsoft Windows SDK以Matlab Compiler

3.在matlab中使⽤ mex -setup 以及mbuild -setup配置好编译器环境

4. 执⾏语句:“setenv('MW_MINGW64_LOC','C:\TDM-GCC-64') mcc -W cpplib:xxxlib名 -T link:lib matlab函数⽂件名.m“ ⽣成 xxx.h xxx.dll 和xxx.lib三个⽂件

5.将上述三个⽂件放到vs⼯程中(注意⽤x64环境)

6.vs配置:VC++⽬录包含⽬录R2019b\extern\include

库⽬录extern\lib\win64\microsoft

链接器输⼊→附加依赖项 xxx.lib libmx.lib ibmat.lib mclmcr.lib mclmcrrt.lib

7.包含.h头⽂件,依次调⽤mclInitializeApplication()

...Initialize()

此处可以调⽤matlab⾥的函数,若有参数,参数定义为mwArray a,a可以矩阵、字符串

最后调⽤(可⽆)

mclWaitForFiguresToDie(NULL);

....Terminate();

mclTerminateApplication();

对VC++6.0与Matlab的混合编程技术的探讨

对VC++6.0与Matlab的混合编程技术的探讨
瞳数 名 功 能 e g pn n O e 启动 引擎 . 请求 建 立与 服 务 器连 接 eg I e n Co s 请 求 释 放与 服 务 器连 接 . 关闭 引 擎 eg e ry n G t r 从 Ma a Aa t b引擎 获 取 阵数 据 l egu r y n P t r 应 Ⅲ 程 序 向 Mal 引擎 发送 矩 阵 数据 A a tb a e g v l r g 请 求 Ma a n E a tn Si t b服务 器 执 行 M aa l t b命令 l e g u uB f r创 建 缓 冲 区 以获 取 Ma a nO t tue p t b文本 输 出 l
很好 的程 序 设 计 方 法 。
关 键 词 : 用 程序 接 口 ; t b引 擎 ; C + 客 户机 / 务 器 应 Ma a l V +; 服
Mal t b是 Mah ok 公 司推 出 的 一 套高 效 a tw rs 1 用户 数 据 请 求 (C 数 据 类 型 )、x ry 种 , Poet a e中输 入项 目名 , 项 目引 导完 、 V 2m Ar a 在 r cnm j 按 率的数 值计 算 和可视 化软 件 ,具有 极其 强大 的数 矩 阵 ( 数 据 结 构 )、 t b 命 令 成 项 目工程 创建 。 3 Mal a 在这 里我们 创建 一个 MF C单文 值分 析 、矩 阵运 算 、信 号 处 理 和图 形显 示 功 能 ; 4 Ma a 、 t b变量 ( l 数据 结 构) 、 t b命 令 6 Malb 档工程 , 名为 D m eg 5 Mal a 、 t a 命 e on 。 Maa t b以其强 大的数 据处 理能 力 和丰 富的工 具箱 变量 ( l 数据 结 构 ) 、 x r y矩 阵 ( 据 结 果 ) 、 7m Ar a 数 8 31 .2打开 界面 , 菜单 栏 中选 择 T o -o - _ 在 ol >p s

在VB6_0中调用MATLAB程序

在VB6_0中调用MATLAB程序
( Xi. an Inst. of Technology, Xi. an 710032, China)
Abstr act : Visual Basic and MAT LAB are introduced as very import ant t ool for developing software in this paper. The paper describes main2 ly about using the t echnology of Act iveX which is included in Visual Basic 6. 0 t o operat e t he calculat ing engine of MAT LAB. Combined programming met hod of Visual Basic and MATLAB are given. T he met hod makes MATLAB run with t he VB environment , integrates t he visual int erface of VB and t he st rong abilit y of numerical analysis for MAT LAB, gives full play to their each advant ages. As a simple example, applicat ion of MATLAB can furt her complet e using compiled software. Finally, effect s of combined programming are summed up. Key wor ds: visual basic 6. 0; Act iveX; MAT LAB; combin ed development

Matlab7.0函数转换成VC++6.0动态链接库-14页文档资料

Matlab7.0函数转换成VC++6.0动态链接库-14页文档资料

Matlab7.0函数转换成VC++6.0动态链接库(来源于网络,版权归作者所原作者有,如有侵权立即删除)

1 、 mcc4.0 编译环境设置在桌面上右键单击“我的电脑”图标出现以下菜单单击“属性”菜单项,出现“系统特性”对话框,单击“高级”选项卡,如下图所示在上图中,单击“环境变量”按钮,出现“环境变量”对话框,添加系统变量matlab 值为 C:\MATLAB7 即

1 、 mcc4.0 编译环境设置

在桌面上右键单击“我的电脑”图标出现以下菜单

单击“属性”菜单项,出现“系统特性”对话框,单击“高级”选项卡,如下图所示

在上图中,单击“环境变量”按钮,出现“环境变量”对话框,添加系统变量 matlab 值为 C:\MATLAB7 即 matlab7.0 的安装路径,如下图所示

在环境变量 path 中加入 C:\MATLAB7\bin\win32 ,如下图所示

按“确定”完成设置后,重启计算机或注销当前用户,即可应用新设置。

2 、 Matlab7.0 编译器设置

(1) mex 命令设置

(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mex -setup ”命令后,按回车键,安装 Matlab 编译器;

(b) 命令窗口出现如下提示:

Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n?

VC调用matlab的步骤

VC调用matlab的步骤

数据拟合的关键步骤

数据拟合的好坏与模型是否能够成功有很大的关系,因此在数据拟合上,该软件库使用了比较成熟的数据拟合算法,即采用比较权威的高效计算软件Matlab6.1中的数据拟合函数进行拟合。

对于在Visual C++中调用Matlab应用程序接口,关键在于设置编译环境和使用正确的调用规则,然后,在发布软件时携带必要的动态连接库就可以保证程序的独立性[10]。

1、设置Visual C++编译环境

对于调用Matlab的应用程序来说,只要保证程序的编译路径中包含Matlab 的目录下的Extern\Include目录,然后在程序中添加libmx.lib、libmmfile.lib、libmex.lib和libmatlb.lib即可[14]使用Matlab提供的高效算法。而针对于Visual C++6.0来说,具体设置如下:

图3.1 选项目录属性页

第一步:打开应用程序工程后,在‘工具’菜单下选择‘选项’选单,将弹出选项对话框,选择其中的‘目录’属性页,如图3.1所示,在其中的Show

directories for下拉式选

项框中分别选择Include Files和Library Files,在下部的编辑框中输入以下路径:

Matlab根目录\EXTERN\INCLUDE

Matlab根目录\EXTERN\LIB

然后选确定按钮。

第二步:选择下拉菜单Project中的菜单项Add To Project>>Files,将Matlab根目录\\extern\lib\win32\microsoft\msvc60下的四个lib文件:libmx.lib、libmmfile.lib、libmex.lib、libmatlb.lib添加到工程中。完成上述工作后,就可以在Visual C++中调用Matlab数学函数及计算引擎了。

VB6.0调用matlab生成的dll文件

VB6.0调用matlab生成的dll文件

VB6.0调用matlab生成的dll文件

环境:win7 64位,matlab2010b,Vb6.0

一、设置环境变量

右键计算机——属性——高级系统设置——环境变量,在用户变量和系统变量中均添加如下路径:路径名为path 值为”C:\Program Files\MATLAB\R2010b\bin\win64”(matlab安装路径),重启计算机。

二、编写m文件,注意以function开头

三、在matlab中设置编译环境

1.在matlab命令窗口中输入mex –setup,选择n,然后在弹出的众多编译器中选择一个,最好选择VC++系列(在进行这一步时,现在电脑上安装VC的编译器,如VC++6.0、Visual Studio,注意要安装英文版),接下来一直选择y,直至看见Done……,证明这一步成功了;

2.接下来输入么build –setup,接下来步骤与1相似,直至看见Done……。

四、进行编译,生成dll文件

1.在matlab窗口中输入deploytool,在弹出的窗口中,name随便填,location选择默认即可,Target选择倒数第二项:Generic COM Component,单击OK;

2.选择Add class,填写class name,单击Add files,选择所需编译的m文件,然后单击

build按钮,等待编译结束,这是会看到生成的文件夹中含

distrib这个文件夹,所需的dll文件即在里面。

五、注册dll

开一个dos窗口(在开始里输入运行即可),在dos窗口中输入:cd/d /runtime/win64,回车,接着输入mwregsvr mwcomutil.dll,即对mwcomutil.dll 进行注册(这个dll是matlab下作的任何com组件都要用到的dll)。

VC6.0调用matlab引擎修改版

VC6.0调用matlab引擎修改版

1.创建dlg:

2.成员变量:

.h文件添加头文件

#include "engine.h"

#include

#include

添加成员变量

mxArray *m_pOrigMatrix, *m_pColorBw, *m_pBw;

int m_nHeight, m_nWidth, m_nChannels;

BYTE *lpBuf;

BOOL* OpenARPAMotionMatrix;

Engine *m_ep;

IplImage *m_pOrigin;

CHAR* buff;

3.按键响应函数

//处理

void CMatlabEngine00Dlg::OnProcessing()

{

// TODO: Add your control notification handler code here

BYTE *temp;

temp = (BYTE*)mxGetData(m_pOrigMatrix);

int i, j;

for( i=0;i

for( j=0;j

{

temp[i*m_nWidth+j] = lpBuf[i*m_nWidth*3+j*3];

temp[m_nWidth*m_nHeight+i*m_nWidth+j] = lpBuf[i*m_nWidth*3+j*3+1];

temp[m_nWidth*m_nHeight*2+i*m_nWidth+j] = lpBuf[i*m_nWidth*3+j*3+2];

}

engPutVariable( m_ep, "Origin", m_pOrigMatrix );

engEvalString( m_ep, "[colorBw,bw]=func(Origin);");

VC中调用matlab配置方法

VC中调用matlab配置方法

ATLAB提供了许多方法与VC程序的通信:MATLAB引擎(ENGINE)模式,采用了客户机/服务器(CLIENT/SERVER)的计算形式,通过MA TLAB应用程序接口(API)中有关函数,在VC 环境中调用MATLAB函数,但此种方法需要MATLAB环境后台支持,因此系统必须安装MATLAB;MA TLAB本身提供的MCC工具编译,编译m文件生成VC++或c语言,直接在VC中使用;MATLAB的MEX工具将m文件编译成DLL,供VC调用。。。。。。MATLAB现具有的MA TLAB Add—in(其包装了MCC、MEX)更方便了第二、三种方法的应用,现本系统的实现就是以第三种为基础的。

2.1 MA TLAB与VC实现互连

为了在开发时实现对MA TLAB的具体功能的调用,应首先在操作系统中安装MATLAB工具软件,之后并运行此工具软件,依次执行“mex –setup;mbuild –setup;cd(prefdir); mccsavepath;”命令。之后运行VC开发工具,从VC++菜单中依次打开“Tools->Customize->Add-ins and Macro Files”,选中MA TLAB Add—in宏,可以看到工具栏中多了一个

。现在VC就可以利用它来得到m文件所对应的c、c++文件。

2.2 开发工具VC运行环境设置

开发时,须对VC的开发环境变量进行设置。通过“Tools->Options->Directories”找到的“Directories”项中添加环境变量。

使用VC调用matlab_engine编程

使用VC调用matlab_engine编程

关于如何使用VC调用matlab engine编程

刚开始学使用VC调用matlab engine编程的时候,遇到很多问题,就去百度找解决方法,但发现根本解决不了我的问题,因为网上大部分实例和步骤都是在matlab6.5和vc++6.0环境下完成的,但是现在我用的是matlab2010a,所以会出现很多环境配置的问题,写本文的目的是总结用我在用VC调用matlab engine编程过程中出现的问题和解决办法。

Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。调用使用的函数是:engEvalSting。

下面是自己的实践过程:

如果是第一次使用,则要设置一下Visual C++6.0 编程环境中的include 和lib的路径指向。我的matlab2010安装在D盘目录D:\MATLAB 2010

一、设置VC相关属性。

(1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for 下拉列表中选择Include Files,添加路径:D:\MATLAB 2010\extern\include (这是我电脑中Matlab的安装路径);再选择下拉列表中的 Library Files,添加路径:D:\MATLAB 2010\extern\lib\win32\microsoft(我电脑中Matlab 的安装路径,但是在我查看资料的时候看到很多是

VC_6_0与Matlab混合编程在物理实验数据处理系统中的应用

VC_6_0与Matlab混合编程在物理实验数据处理系统中的应用
件并嵌入 VC Matlab 自带的 mcc 编译器存在很多不便之处,如 转 换 的 代 码 可 读 性 不 太 好,不 支 持 图 形 函 数 等。 Matcom 是 Mathtools 公司开发的一个能对 Matlab 的 m
文件进行高效解释和调试的编译器,提供对 m 文件的 解释执行和开发环境 支 持。因 此,可 以 利 用 Matcom 将 m 文 件 直 接 转 换 成 exe 文 件,然 后 在 VC 中 通 过 shell 调用。这种方法简单,运行时还会出现一个控制 台窗口,用于 VC 和 Matlab 实现图形显示。也可以将 Matlab 的源代码译成同等功能的 C ++ 源代码或 C ++ 形式的 dll,这样既可保持 Matlab 的优良算法,又可保 持 C ++ 的高执行效率,同时,在 VC ++ 中只需包含必 要的 lib、dll 以及 h 文件,就可以实现脱离 Matlab 环境 对 Matlab 实现函数和过程的有效调用[5,13-14]。 1. 4 通过 COM 组件调用 Matlab
WANG Yan-ping, YANG Jian-song ( Science College,Hangzhou Normal University,Hangzhou 310036,China)
Abstract: VC + + 6. 0 and Matlab mixed programming has powerful function. This paper introduced the physics experiment data processing system developed with VC ++ 6. 0 and Matlab,and gave some source code for consideration. Combination of VC ++ 6. 0 and Matlab language can increase the developing efficiency of software greatly. Key words: VC ++ 6. 0; Matlab; experiment data processing

Matlab程序在VC中的调用

Matlab程序在VC中的调用

Matlab程序在VC中的调用摘要:利用vc与matlab接口技术,用VC 调用Matlab 编译的DLL 文件进行复杂数据处理不仅简洁通用,更具有很强的实用性和可扩展性,在科学计算与工程运用领域具有广泛的推广应用价值。

关键词:MATLAB ;VC;DLL ;接口

1. VC与MATLAB简介

VC 是大家都非常熟悉的一个软件,它是MicroSoft公司开发的在Windows 环境下主要软件开发环境之一,用其中的MFC 可以快速方便地编写出各种友好的用户界面,且用VC ++ 开发的系统具有容易维护升级、界面友好,代码效率高、执行速度快等一系列优点,因此已成为目前应用软件开发中的主流工具之一。

①、MATLAB是Mathworks 公司开发出的一款著名软件,如今已成为世界上使用最广泛的数学软件,它具有强大的数值计算、数据处理、图象显示、符号运算、系统分析、模拟仿真功能,由于受到各个领域专家学者的青睐,在他们的共同努力下,经过多年的发展,如今的Matlab 不仅拥有功能完善的内部函数库,更有专用于各领域的强大工具包,在这个平台上只需寥寥数语便可完成在其它环境中复杂度不可想象的功能;另外,开放性也是Matlab 一个最重要、最受欢迎的特点,除内部函数外,所有Matlab 工具包中主包文件和各工具包文件都是可读可改的源文件,用户可通过对源文件的修改来形

成新的工具包,甚至亦可完全由自己编写源文件来构筑自己研究领域的专用工具包。在欧美发达国家中,Matlab 已经成为应用线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能;在设计研究单位和工业部门,Matlab 也被广泛地用于研究和解决各种具体工程问题。Matlab在中国得到充分的重视,在各科研机构和高校中得到大量的使用。

如何用VC6读写MATLAB的.mat文件

如何用VC6读写MATLAB的.mat文件

如何用VC6读写MATLAB的.mat文件

2009-04-17 08:42

如何用VC6读写MATLAB的.mat文件

[ 2006-10-9 13:37:00 | By: monkeydl ]

1、选VC的菜单Tools->Options,在弹出对话框中点选Directories标签,在右方的下拉菜单中选择Include files,然后在下方列表中添加

($MATLAB$)externinclude;再在右方的

下拉菜单中选择Library files,然后在下方列表中添加

($MATLAB$)externlibwin32microsoftmsvc60。

注:上面的($MATLAB$)以计算机中MATLAB的安装位置替换;如果使用的VC版本是5.0,则把列表中添加路径中的msvc60替换成msvc50即可。

2、对于需要操作.mat文件的工程,选择菜单Project->Settings,在弹出对话框中点选Link标签,在Object/library modules中加入 libmx.lib libmat.lib。下面是程序中的调用

,以例子说明用法,必要时候如用到mxArray时候还要加入sgl.lib libmatlbmx.lib。

3、一定要加入#include "mat.h" ,如果要对mxArray进行操作,加入#include "matlab.h" 。具体的mfc程序的例子见“e:.....StaticDraw”工程。

**VC中读取MATLAB的.MAT文件

**在VC中要读取MATLAB的.MAT文件是要费点工夫的,下面是详细步骤,以MATLAB7为例.

VC++中如何能调用matlab函数

VC++中如何能调用matlab函数

Visual C++是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快。但在科学计算方面函数库显得不够丰富、读取、显示数据图形不方便。Matlab是一款将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,适合科学研究、工程设计等众多学科领域使用的一种简洁、高效的编程工具。不过由于Matlab使用的是解释性语言,大大限制了它的执行速度和应用场合。基于VC和Matlab混合编程是很多熟悉VC++编程而又需要进行科学计算、数据仿真的科研人员常用的一种方式,其中最简单也最直接的方法就是调用Matlab引擎。本文以下部分将详细介绍通过VC++6.0调用Matlab6.5引擎来达到VC++与Matlab数据共享编程的方法。

1. 什么是Matlab引擎

所谓Matlab引擎(engine),是指一组Matlab提供的接口函数,支持C/C++、Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对Matlab 的控制。可以主要功能有:

★打开/关闭一个Matlab对话;

★向Matlab环境发送命令字符串;

★从Matlab环境中读取数据;

★向Matlab环境中写入数据。

与其它各种接口相比,引擎所提供的Matlab功能支持是最全面的。通过引擎方式,应用程序会打开一个新的Matlab进程,可以控制它完成任何计算和绘图操作。对所有的数据结构提供100%的支持。同时,引擎方式打开的Matlab进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制Matlab运行的流程,并可在其中输入任何Matlab命令。

Vc++6.0调用matlab的数学库函数

Vc++6.0调用matlab的数学库函数

Vc++6.0调用matlab的数学库函数

Vc++6.0调用matlab的数学库函数

前段时间在摸索如何在VC++6.0当中调用Matlab的里的数学库函数。当时弄得我很是郁闷,现在想想,自已走了很多弯路,原来,是如些的简单。所以,与出来和大家一起讨论和分享。

一、关于Matlab6.x

首先,matlab它本身也是用C++语言编写的,具是什么是编译器我倒是忘记了(好像是Borland吧)。说Matlab是一种科学计算语言吧,其实也可以,不过,其实也可以把它看作是一个科学计算软件。它里面有很多的已写好的数值计算、分析以及统计等的函数。然后在Matlab里写文件(比如.m文件),文件里的每一个语句其实都是在调用它里面的函数。说白了,Matlab就是为我们写了一大堆的数学运算函数,然后再能过文档(help指令)来告诉我们怎么调用这些函数,就是这样。

其次,为什么要选择Matlab的6.x版?现在最新的版本好像是7.x 了吧,照理说,就应该用最新版的。可是,最新版的Matlab(7.x)不再把数学库公共了,如果想要调用它里面的函数库,就必须将Matlab在后台运行。也就是说,不管你用什么语言,只要你想调用Matlab7.x里面的函数,那么你的程序就必须在Matlab运行环境下运行。哦,刚才忘记说了,这篇日志的目的是要建立独立于Matlab 运行环境的程序。

最后,Matlab6.x已推出七八年了,会不会和7.x版本相比而有点过时了?我是这样理解的,如果你调用的函数不是一些当前数值计算领域的新兴问题,那就是没有问题的。对于我们工科的人来说,10年前的伟大的mathworks公司绝对可以提供我们想要的计算方法了。所以,6.x,没问题。

vc调用matlab函数

vc调用matlab函数

vc调用matlab函数

时间:2007-09-18作者:佚名编辑:本站点击:3564 [评论]

Matlab 是由Math Works 公司于1984 年推出的数值计算及图形处理软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干领域的计算和图形显示功能。其中,控制系统工具箱的集成为设计和分析各种复杂的控制系统提供了有效的方法和途径。

但是,由于Matlab开发平台的局限性,在其上面开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,现将二者结合共用,各献其长,可以为科研工作和工程开发提供了更为强大的技术支持。

1、Matlab与VC混合编程的实现方法

Matlab作为控制系统设计的一种通用工具,它可以和VC方便的进行连接。一般而言,Matlab与VC混合编程的实现方法主要有以下三种方法:(1)通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab进行连接。具体应用时,往往在VC中设计程序框架,以编译的程序作为前端客户机;通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信(2)应用Matlab数学函数库,Matlab中包含了内容丰富的函数库,而且还提供了与VC的数学函数接口,用户可以方便的在VC的IDE(集成开发环境)中调用。(3)通过DLL实现VC与Matlab的混合编程。DLL是一个可执行的二进制文件。把很多通用的功能放在DLL中,可以供多个应用程序调用,这样可以很好的减少外部存储空间的占有量,并实现代码的共享[2]。在上述三种方法中,第一种方法对调用Matlab的工具箱很实用,所有在进行控制系统的设计和分析时,一般都是通过调用Matlab 引擎(Engine)来实现的。本文主要介绍采用通过引擎(Engine)来实现VC与Matlab的混合编程。

Matlab与VC++6.0混合编程---matcom篇(初级)

Matlab与VC++6.0混合编程---matcom篇(初级)

Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。现在mathTools公司已经被Matlab的开发公司MathWorks公司兼并,Matcom的最后版本为4.50.相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便得多。本文将结合我的编程小经验,以VC6.0和Matcom为例,粗略介绍下如何利用Matcom进行VC与Matlab的联合编程。

由于Matcom的版本比较老,在Matlab6.0以上安装MIDEVA可能会出现一些路径问题,解决办法是按照错误的提示,建立相关的目录。比如我的是新建了目录:

C:\MATLAB6p5\bin\toolbox\matlab\general.Matcom可以独立于matlab运行,但使用Matcom需要有外部的C++编译器。而指定matlab位置主要是为了给编译文件需要的一些系统函数找到路径。

安装好后,进入mideva界面,下面以一个具体的例子说明主要过程:

一:打开mideva->file->new,这里我们要转换的m文件为:

load err.dat

figure

subplot(2,4,1),plot(err(:,1)),title('运动方向'),xlabel('s'),ylabel('分'),grid

但是Matcom转换的需要是函数形式,故上述script文件需要转换成function,具体为:

function ff()

load err.dat

figure

subplot(2,4,1),plot(err(:,1)),title('运动方向'),xlabel('s'),ylabel('分'),grid

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vc++6.0调用matlab的数学库函数

前段时间在摸索如何在VC++6.0当中调用Matlab的里的数学库函数。当时弄得我很是郁闷,现在想想,自已走了很多弯路,原来,是如些的简单。所以,与出来和大家一起讨论和分享。

一、关于Matlab6.x

首先,matlab它本身也是用C++语言编写的,具是什么是编译器我倒是忘记了(好像是Borland吧)。说Matlab是一种科学计算语言吧,其实也可以,不过,其实也可以把它看作是一个科学计算软件。它里面有很多的已写好的数值计算、分析以及统计等的函数。然后在Matlab里写文件(比如.m文件),文件里的每一个语句其实都是在调用它里面的函数。说白了,Matlab就是为我们写了一大堆的数学运算函数,然后再能过文档(help指令)来告诉我们怎么调用这些函数,就是这样。

其次,为什么要选择Matlab的6.x版?现在最新的版本好像是7.x了吧,照理说,就应该用最新版的。可是,最新版的Matlab(7.x)不再把数学库公共了,如果想要调用它里面的函数库,就必须将Matlab在后台运行。也就是说,不管你用什么语言,只要你想调用Matlab7.x里面的函数,那么你的程序就必须在Matlab运行环境下运行。哦,刚才忘记说了,这篇日志的目的是要建立独立于Matlab 运行环境的程序。

最后,Matlab6.x已推出七八年了,会不会和7.x版本相比而有点过时了?我是这样理解的,如果你调用的函数不是一些当前数值计算领域的新兴问题,那就是没有问题的。对于我们工科的人来说,10年前的伟大的mathworks公司绝对可以提供我们想要的计算方法了。所以,6.x,没问题。

二、关于C++和Matlab混合编程

关于这个主题的文章是非常之多的,足以让你眼花缭乱了。更让我感到不解的是,有好多人居中然以C++和Matlab混合编程为主题,在正式期刊上发表文章。不信你可以在知网或万方上搜搜看,呵呵,一大把。不过,我还是要感谢这些文章啊,因为这些文章让我理解了什么是“灌水”。

所谓的C++和Matlab混合编程大概是指这样的一个过程:

1)在Matlab里写.m文件,当然,这种文件中除了函数好像就没有别的什么了。

2)在Matlab里的命令行中使用mcc命令生成C/C++代码。当然,还可以直接生成.dll和.lib,这里的.dll和.lib都是C的,不能生成C++的动态链接库(反正文档里是这么说的)。

3)在C/C++编译器中嵌入生成的C/C++源码,或调用生成的.dll。

我说,何必这么麻烦呢?

三、弯路子

如果要按照上面所述的三个步骤来进行C++和Matlab混合编程的话,那就必须要安装Matlab了(要不然怎么编写.m文件和使用mcc命令)。在安装Matlab的时候,注意,最好是安装在和你的C/C++编译器所在安装目录的同一个目录下,这一点很重要,要不然,你会发现mcc命令不好使。

安装好之后,你就可以按以上的三个步骤来编程了,具体的一些细节,相关的文章实在是太多了,这里就不多说了。因为,我觉得这是一种弯路方法。

四、言归正传

拜完了“前辈们”,终于轮到我说话了。其实,不用安装Matlab,不用.m文件。其实,说到底,Matlab就是为我们写了许多数学计算函数(可以调用的大约在400多个),然后把这些函数放在一个个的动态链接库中。是的,就是这样理解的,不用想得太多了。那么既然是这样,我们直接调用这些库不就成了嘛,是的,就是这样的,就是这么简单。

首先,我们需了解matlab的安装目录里都有些什么东西,当然,在这里,我们就只关心它的数学库在什么地方。是这样的,只用关心两个文件夹:/bin和/extern(指的是matlab的安装目录),是吧,找到了吧,bin这个文件夹,看到这个

名字就知道它是里面一定是一些.dll,果然是这样的,matlab里面的所有c/c++数学库都在这个文件夹里面的。别外,要想引用这

些.dll,你当然需要相应的.h/.hpp头文件和.lib文件了,那么,在/extern/include里面就是头文件,而在

/extern/lib就是.lib文件(静态链接库)了。我们所需要的东西就是这么多了,别的,真的不需要了。所以,我说,不需要安装matlab了,你直接在一台装有matlab的机器上把这两个文件夹(/bin和/extern)拷到你的电脑来就行了。

两个matlab的两个官文档是很有用的:MATLAB C++ Math Library User’s Guide 和MATLAB C++ Math Library Reference具体是这两个文档,顾名思义,就不用我说了,如果你发现在网上找这两个文档有困难的话,我的机器上倒是有。

五、总结

虽然,一二三四五这么一串说下来是说了很多没有用的话,不过对于新手来说,应该是有一定帮助的,真的可以节省很多宝贵的时间。

唉,其实真是还有一些比较重的细节的东西没有写出来,比如

c++编译器环境的配制,mwArray和mxArray的困惑,c++函数的调用格式与matlab里调用的异同等,不过,对于新手来说,上面的这些东西已经够烦的了,呵呵。下午就要回家了,回家过年,就到这里吧。

相关文档
最新文档