VC_与MATLAB混合编程的方法研究与实现_柏晟

合集下载

Matlab引擎实现VC和Matlab混合编程

Matlab引擎实现VC和Matlab混合编程

Matlab引擎实现VC和Matlab混合编程
要想在VC集成环境下利用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:
(1)Visual C++6.0 编译环境的设置:通过菜单Tools/ Options,打开Visual C++6.0设置属性页,进入Directorie页面,在Show Directories for下拉列表中选择Include Files,添加路径:D:\Matlab6p5\extern\include(在Matlab的安装路径下);再选择下拉列表中的Library Files,添加路径:D:\Matlab6p5\extern\ lib\win32\Microsoft\msvc60(在Matlab的安装路径下)。

编译环境只需设置一次。

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

每个新的工程文件都要单独添加库文件。

(3)在使用engine 函数的程序头文件中包含如下两个头文件:#include "engine.h";#include 。

(4)在应用程序中添加调用Matlab引擎的程序代码:
以上步骤是对VC与Matlab混合编程的编译环境进行设置,在完成了以上基本步骤后就可以利用Matlab引擎库函数engEvalString来调用Matlab的内建函数了。

Matlab与C混合编程的方法研究与实现毕业论文

Matlab与C混合编程的方法研究与实现毕业论文

Matlab与C混合编程的方法研究与实现摘要:文章探讨了MATLAB与VC++的优缺点,介绍了VC++与Matlab混合编程的几种方法。

通过二者的结合,既有效地利用了MATLAB强大的数值计算能力和众多的函数,大大减少程序设计的工作量,又继承了VC++良好的程序界面,证明是一种很好的程序设计方法。

具体说明了如何应用Matlab引擎实现混合编程以及如何利用MATCOM进行MATLAB和VC++混合编程,并将两种方法用于数字图像处理。

关键词:MATLAB;VC++;MATCOM;引擎;混合编程;图像处理一、引言1、数字图像处理简介:图像技术由高到低分为三个层次:图像处理、图像分析和图像理解。

图像处理是比较底层的操作,它主要在图像像素级上进行处理,处理的数据量非常大。

数字图像处理最基本的目的就是改善图像,主要是按需要进行适当的变换突出某些有用的信息,去除或消弱无用的信息,如改变图像的对比度,去除噪声或强调边缘的处理等,其基本方法有:直方图修正、灰度变换、图像的频域特性、图像平滑、图像锐化等。

直方图是图像的重要统计特征,是表示数字图像中每一灰度级与该灰度级出现的频率数间的统计关系。

直方图能给出该图像的大致描述,如灰度范围、灰度级的分布、整幅图像的平均亮度等,但它不能完整地描述一幅图像。

通常用横坐标表示灰度级,纵坐标表示频数。

通常一幅均匀量化的自然图像由于其灰度直方图分布集中在较窄的低值灰度区间,引起图像的细节看不清楚,为使图像变得清晰,我们可以通过变换使图像的灰度范围拉开或使灰度分布在动态范围内趋于均匀化,从而增加反差,使图像的细节清晰,达到图像增强的目的。

灰度变换是图像增强的一种重要手段,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。

灰度变换可分为线性、分段线性、非线性以及其他的灰度变换。

线性灰度变换实际上使曝光不充分的图像中黑的部分更黑,白的部分更白,从而提高对比度。

图像中的边缘或者线条部分与图像频谱中的高频成分相对应,因此采用高通滤波的方法让高频分量顺利通过,使低频分量受到抑制,就可以增强高频的成分,使图像的边缘或者线条变得清晰,实现图像的锐化。

MATLAB中调用VC混合编程方法的研究与实现

MATLAB中调用VC混合编程方法的研究与实现

MATLAB 是Mathworks 公司推出的一款功能强大的数学软件,它集数值分析、矩阵计算、信号处理和图形显示于一身,包含大量高度集成的函数可供调用,命令语句功能强大,为科学研究、工程设计及众多学科领域提供了一种简洁、高效的编程工具,并在图像处理、控制设计、信号检测、金融建模设计等领域得到广泛应用[1]。

但是MATLAB 使用的是解释性语言,这限制了它的执行速度,不利于开发各种应用软件[2]。

相比之下,VC 是Windows 平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发出的系统具有界面友好、执行速度快、易维护和升级等优点[3]。

同时,VC 因其与操作系统和底层硬件交换的效率而在高级语言中得到广泛应用。

因此,如何实现VC 和MATLAB 的混合编程来提高代码运行效率就成了一个研究方向。

一般情况下大多数应用侧重于通过在VC 中利用MATLAB 强大的数学运算功能[4-5],而在MATLAB 中利用VC 进行软件开发的例子比较少。

然而利用MATLAB 语言制作软件的过程中,经常会碰到一些MATLAB程序无法解决的问题,此时如果通过混合编程调用VC/VC++,这些问题便可迎刃而解。

这种混合编程方法的运用,不仅能够更好地发挥MATLAB 强大的功能,还能缩短软件开发周期,因而在仿真技术研究中具有重大实用价值。

本文将具体论述在MATLAB 中调用VC 的混合编程方法并将其应用于MATLAB 的自动索引中从而极其方便地打开chm 格式帮助文档并自动定位到文档的相应位置。

1MATLAB 中调用VC 的混合编程方法在MATLAB 平台上调用VC 一般是因为使用MATLAB语言来实现特定算法功能代码复杂、运行效率低下。

这时候利用VC 与系统和底层硬件交换效率及其强大的调试功能可以编写高效的算法程序,然后通过将VC 上的源程序编译成可供MATLAB 使用的库文件或MEX 文件无疑很好地发扬了两种语言的优势。

基于VC与MATLAB混合编程的研究

基于VC与MATLAB混合编程的研究

基于VC与MATLAB混合编程的研究
李自胜;向中凡;朱莹;秦赟
【期刊名称】《西华大学学报(自然科学版)》
【年(卷),期】2002(021)001
【摘要】MATLAB是功能强大的工程计算和数据分析软件,VC是面向对象的快速开发工具.二者结合,可以开发出具有友好界面、满足工程领域应用的软件.本文作者探讨了四种编程的方法,比较了它们的优缺点,并以实例说明.
【总页数】4页(P13-16)
【作者】李自胜;向中凡;朱莹;秦赟
【作者单位】四川工业学院机械工程与自动化系,四川,成都,610039;四川工业学院机械工程与自动化系,四川,成都,610039;四川工业学院机械工程与自动化系,四川,成都,610039;中原油由分公司炼油化工总厂,河南,濮阳,457165
【正文语种】中文
【中图分类】TP314;TP317.4
【相关文献】
1.基于Matlab Add-in的Matlab/VC混合编程的研究 [J], 李霞;李萌彦
2.基于VC与MATLAB混合编程的复杂数字信号EMD处理技术研究 [J], 申文静;顾泽植
3.基于VC与MATLAB混合编程的研究 [J], 翟军红;王红宣
4.基于COM的MATLAB与VC++混合编程研究 [J], 苏波
5.基于MATCOM的MATLAB与VC混合编程技术研究 [J], 吴高峰;李熙莹
因版权原因,仅展示原文概要,查看原文内容请购买。

VC与MATLAB混合编程实现方法及具体实例研究

VC与MATLAB混合编程实现方法及具体实例研究

VC与MATLAB混合编程实现方法及具体实例研究夏欣【期刊名称】《青岛理工大学学报》【年(卷),期】2012(033)003【摘要】Vc++与MATLAB混合编程的方法主要有2种类型,一种是在MATLAB中调用VC,另外一种是在VC中调用MATLAB.主要研究VC中调用MATLAB的方法,该类型的方法可以方便快捷地编制需要绘制图形的用户可执行程序.比较了该类型中几种方法的优缺点,并采用VC中调用Matcomc++矩阵库函数方法,给出了一个在VC++6.0和Matcom4.5环境下实现的两者混合编程的实例.%Two kinds of method could realize VC++ and MATLAB hybrid programming. One is calling VC in MATLAB,the other is just on the contrary, calling MATLAB in VC. This article mostly studies calling MATLAB in the VC method, which can realize user exe- cutable program conveniently and quickly. Advantages and disadvantages are compared be- tween these methods, and a hybrid program example in VC++6.0 and Matcom 4. 5 is giv- en, which adopts calling MATLAB C++ matrix in VC method.【总页数】6页(P83-88)【作者】夏欣【作者单位】青岛理工大学理学院,青岛266033【正文语种】中文【中图分类】TP319;TH7【相关文献】1.基于MATCOM转化法的VC与MATLAB混合编程实现汽车I曲线的模拟绘制[J], 任龙辉;肖婵;李腾飞2.VC与Matlab混合编程实现图像处理 [J], 刘子霆;3.基于MATLAB与VC++混合编程实现配电网重构算法 [J], 李国胜;华泽玺;苗轶如4.基于VC与Matlab混合编程实现图像增强处理 [J], 刘大鹏5.VC++与Matlab混合编程实现光场光强的三维显示 [J], 杨入超因版权原因,仅展示原文概要,查看原文内容请购买。

MATLAB中调用VC混合编程方法的研究与实现

MATLAB中调用VC混合编程方法的研究与实现
c l VC f n t n n a MAT AB p o e u e w t h o i ro al u ci s i o L r c d r i t e c mp l fMAT AB b h t o f MEX, n r vd d a c n r t h e L y t e meh d o a d p o i e o c ee e a l fa ta h n s i a tto h tc n a h e e a t mai n e ig T e r s l r v h tt e meh d e e t l ov x mp e o e c ig a ss n o lt a a c iv u o t i d x n . h e u t p o e t a h t o f c i y s l e t c s v t e p o lm fa c r t o a in o h ep d c me tt n i h o t a e p o a h r b e o c u ae lc t ft e h l o u n a i n t e s f r r g mme y MAT AB l n a e a d p o ie o o w r db L a g g , n rv d u
何 利 用 M r A 自带 的 编 译 器 通 过 ME 方 法 实现 在 MA L B程 序 中调 用 V 函数 , 结 合 实 际 给 出 了一 个 在 辅 Ar B L X TA C 并 助 教 学软 件 中 实 现 自动 索 引 的具 体 例 子 。 运 行 结 果 证 明 该 方 法 能 够 有 效 解 决 基 于 MA I B语 言 开 发 的 软 件 中 帮 TA 助 文 档 精 确 定 位 的 问题 . 为 其 他 类 似 应 用 提 供 参 考 。 并

VC++与Matlab混合编程的研究与实现

VC++与Matlab混合编程的研究与实现

VC++与Matlab混合编程的研究与实现关键词: VC++,matlab,混合编[文章信息]作者: 朱立松帅亮安居白时间: 2004-10-07出处: 计算机与信息技术责任编辑: 方舟[文章导读]在分析Visual C++和Matlab各自特点的基础上,提出混合编程的几种方法,分析对比各种方案的优缺点VC++与Matlab混合编程的研究与实现摘要在分析Visual C++和Matlab各自特点的基础上,提出混合编程的几种方法,分析对比各种方案的优缺点。

并结合实例介绍比较简便实用的Matcom混合编程方案,该方案不仅能转化成C/C++函数,而且可以支持图形函数功能。

可以为科学研究和工程技术提供更强的技术支持。

关键词 Visual C++; Matlab; Matcom; 混合编程Matlab是Mathworks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,命令语句功能十分强大,为科学研究、工程设计及众多学科领域提供了一种简洁、高效的编程工具。

但是Matlab使用的是解释性语言,大大限制了它的执行速度;源代码的公开不利于算法和数据的保密;局限于Matlab运行环境而不能用于开发商用软件。

Visual C++是Windows平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发的系统具有界面友好、执行速度快、易维护和升级等优点。

但是在工程计算方面,和Matlab相比编程显得复杂的多。

因此实现VC与Matlab混合编程,使两者结合起来,协同工作,必将提高软件开发效率,使所开发的软件具有更高的性能,更大的应用范围,也可以为科学研究和工程技术提供更强的技术支持。

VC与Matlab混合编程的实现方案在VC环境中调用Matlab程序主要有以下几种方法:(1)用Matlab引擎,采用客户机/服务器(Client/Server)的计算模式。

在VC中设计程序框架,作为前端客户机,通过调用Matlab引擎与后台Matlab服务器建立连接,实现命令和数据信息的传递。

VC和matlab混合编程画图实践

VC和matlab混合编程画图实践

VC和Matlab混合编程画图实践2013-03-14【摘要】在DSP软件开发中,基于代码的可移植性的需要,首先要基于VC平台开发出纯C定点版本。

为了对定点代码的精度和性能进行充分测试,需要对其进行定点仿真并与浮点的性能比较。

浮点代码的性能可以很容易的通过Matlab仿真得到,但由于VC与Matlab对仿真结果的保存形式不同,比对结果的过程需要人为完成。

并且VC对定点仿真的结果保存为文本形式,不够直观。

当仿真或测试条目较多时,这一过程将变得重复而繁琐,因此为了将这一过程变得更自动化、更直观,本实践介绍了一种利用VC调用Matlab动态链接库的方法,通过VC直接调用Matlab的方法进行画图,能够更直观、更方便的分析定浮点仿真结果的差异。

【关键词】Matlab Engine动态链接库VC定点仿真Matlab画图一、问题的提出在VC平台软件开发中,需要对实现的定点代码进行定点仿真,观测最后的BER曲线,并与浮点的结果做对比,观察其性能差异。

然而,VC平台的仿真结果只是保存在数组中的结果,不能直观的展示给测试人员,仍需人为的提取分析,这样便造成重复劳动和时间上的浪费,因此需要寻找一种简单易行的方法,实现将VC的仿真结果画图呈现出来。

二、解决思路Matlab作为数据仿真分析的工具十分强大,其包含了非常丰富的数学运算库和与外部工具的接口,众所周知,利用Matlab画图是十分方便的,只需将仿真结果,外加画图的参数传递给Matlab的命令函数,就能非常方便的完成画图,简单易行。

Matlab与VC的接口方式有很多种,如引擎的形式,COM 组件的形式,动态链接库的形式等等,因为动态链接库的形式在之前的实践中已经研究过,并且相对成熟,因此本实践将着重介绍将Matlab的函数编译成动态链接库供VC调用方法,对于引擎的和其他方式略做简单介绍。

三、实践情况3.1 工具与环境准备1)Matlab环境准备:本实践中采用的Matlab版本为R2011b。

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

文章编号:10035850(2006)04002302VC++与MATLAB混合编程的方法研究与实现Research and Implementation of VC++and MATLAB Mixed Programming柏 晟(湖南衡阳师范学校 衡阳 421003)【摘 要】C++与其他高级语言相比具有很高的编译效率,但在像图形、图像处理一类的应用中,当程序中涉及到对矩阵的运算时,编程就变得非常复杂,而MAT LAB在这些方面有独特的优势。

在分析Visual C++和M ATLAB各自特点的基础上,提出混合编程的三种方法,并分析对比各种方案的优缺点。

研究与实践表明:采用VC++和M ALAB混合编程简化了编程步骤,降低了编程难度,较好地发挥了VC++和M ALAB软件的整体优势。

【关键词】Visual C++,M ATLAB,混合编程中图分类号:T P311 文献标识码:AABSTRACT C++is one of the mo st efficient languag es,but as pr ocessing matr ix pro blem such a s g raphic and image pro cessing it m akes the pr og ram v ery much co mplex,w hile M A T L A B has the specia l advantag e in this aspect.In this paper,thr ee methods o f V C++and M A T L A B mixed pr og r amming ar e pr esent ed thr ough analyzing V isual C++and M AT L AB char acter istic respectiv e-ly,and adv antages and disadvantag es of theses m ethods ar e analy zed and co mpar ed.By resear ching and apply ing,the method of V C ++and M A T L A B mix ed pr og ra mming can simplify t he steps and r educe the difficulty of the pro blem.It makes full use of the character istic o f V C++a nd M A T L A B.KEYWORDS V isual C++,M A T L A B,M ix ed pro gr amming M AT LAB是M athw o rks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,命令语句功能十分强大,为科学研究、工程设计及众多学科领域提供了一种简洁、高效的编程工具。

但是MAT LAB使用的是解释性语言,大大限制了它的执行速度;源代码的公开不利于算法和数据的保密;局限于MA TLAB运行环境而不能用于开发商用软件。

Visual C++是Window s平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发的系统具有界面友好、执行速度快、易维护和升级等优点。

但是在工程计算方面,和M ATLAB相比编程显得复杂得多。

因此实现VC与M ATLAB混合编程,使两者结合起来,协同工作,必将提高软件开发效率,使所开发的软件具有更高的性能,更大的应用范围,也可以为科学研究和工程技术提供更强的技术支持。

1 V C++与M A T L AB混合编程的基本方法1.1 MCC编译器法使用M CC编译器实现VC对M ATLAB的调用,首选将要调用的函数在M AT LAB中写成.m文件,然后使用M CC编译器将.m文件编译成可以在VC++中调用的.cpp文件,最后在VC++程序中调用执行。

也可以用M CC编译器将.m文件编译成为stand-alone程序。

下面以三维螺旋线的绘制为例介绍M CC编译器法的具体步骤:¹编写绘三维螺旋线的.m文件lxh.mfunctio n()t=0:pi/50:15*pi;plot3(co s(t),sin(t),t,'*k')由于MCC编译器本身无法编译脚本文件,因此,需要将脚本文件改写成函数文件,在原始脚本文件的前端,加一行function lxh()。

º利用M ATLAB中的M CC编译器将¹中的lx h.m文件转化为.cpp文件,命令格式如下:M CC-B sglcpp y即将.m文件翻译为C++代码,提供图形支持,并编译为独立可以执行的ex e程序。

编译后得到如下几个文件:lx h.hpp,lx h.cpp,lx h mainhg.cpp,lx h. exe。

* 20051119收到,20060302改回** 柏 晟,女,1980年生,2001年毕业于国防科技大学,研究方向:计算机应用。

・23・第19卷 第4期 电脑开发与应用 (总297) »在VC++中建立一个单文档工程LXH,打开菜单Pr oject 选择Settings ,在工程设置对话框选择C \C ++属性页,首选选择Categor y 为General ,在Pre-pro cessor definitions 编辑框中添加:M SVC ,IBM PC ,M SW IND 。

然后,选择Catego ry 为Precom piled headers,选中Autom atic use of preco mpiled headers,在T hrough header 编辑框中添加stdafx.h,在Link 属性页中选择Catego ry 为Input,找到Object\library modules 编辑框,在其中添加以下的库文件:libm mfile.lib libmatlb.lib libmx.lib libmat.lib libm atpm.lib sgl.lib libm w sg lm.lib最后在Ignore libraryies 编辑框中添加msvert .lib 。

¼在VC 中添加必要的代码。

a .将第º步中产生的lx h .hpp 和lx h .cpp 文件添加到LHX 工程中。

b.编写演示程序draw.cpp 。

c.添加演示所需的的菜单项和必要的消息处理函数。

d.编译、运行程序的结果如图1所示。

图1 使用M CC 编译器法绘制三维中螺旋线的效果图 通过以上实例程序可以看出,采用VC 调用M ATLAB 的方法进行图形、图像处理编程与单独采用VC 相比从编程复杂程度来说有明显的降低。

1.2 Matcom 编译法M atcom 是M athwo rks 公司推出的第一个由M ATLAB 到C ++的编译开发软件平台,它的可视化界面,方便丰富的调试功能和对数学库的强大支持受到广大技术人员的重视。

现在的最高版本为Mat-com 4.5。

我们可以通过在M atcom 中file 菜单下的co m-pile to ex e o r dll 调用.m 文件编译,在M atcom 的de-bug 目录下找到生成的cpp 、exe 、dll 文件。

把需要的文件加到VC 开发环境的工程中,再包含头文件就可以实现调用。

也可以直接在VC 环境下使用科学运算库,即Matco m 的M atrix <LIB >,它是按照Matcom 的语法在VC 中实现类似于M ATLAB 函数的方法。

下面以一个线性方程组的求解过程为例,介绍通过M atco m 实现VC 对M ATLAB 程序的调用,运行环境:Win2000、MAT LAB6.1、Matco m4.5、Visual C++6.0。

¹M AT LA B 运行环境中编写程序equation.m 。

º这里以一个简单的控制台程序为例,其他程序基本相同。

在VC 环境中建立一个名为T est 的Win32Console Applicatio n 工程。

»点击Visual M atco m 工具栏上的m ++图标,选择保存过的M ATLAB 文件equation .m 进行转化。

如果看到的转化信息提示没有错误就可以观察到此时在FileView 标签中多了m -files,C ++files cr eated fr om m -files,M atrix <lib>等文件。

并且该工程目录下增加了equatio n .h ,equation .cpp ,equation .mak ,e-quation.r 等的4个文件。

这时会在VC 中出现一个转换完毕的文件,文件中如果报告有错误就要考虑是否程序有问题,可以双击C ++files 文件夹下的equa-tio n .m 进行修改,再重新转化直到没有错误报告为止。

¼在T est 工程下建立一个文件test.cpp 调用转化的M AT LAB 函数。

我们也可以建立其他类型的工程,只要在需要调用转换后函数的程序中包含matlib.h 并且在响应函数中初始化matlib 库initM (M ATCOM _VERSI ON);结束调用后做结束工作ex itM ();就可以了。

1.3 调用MATLAB 引擎法M ATLAB 引擎是指一组MAT LAB 提供的接口函数,支持C 语言,M ATLAB 引擎采用C/S(客户机/服务器)模式,M ATLAB 作为后台服务器,而C 程序作为前台客户机,通过Window s 的动态控件与服务器通信,向M AT LAB 引擎传递命令和数据信息,从M ATLAB 引擎接收数据信息。

用户可以在前台应用程序中调用这些接口函数,实现对M AT LAB 引擎的控制。

它可以充分利用MAT LAB 的功能,包括调用工具箱函数和图形函数。

M ATLAB 引擎法的应用一般步骤为:¹定义引擎指针、结构体变量和数组;º判定M ATLAB 引擎是否启动;»构造矩阵进行赋值;¼通过M ATLAB 引擎库函数向MAT LAB 工作(下转第27页)・24・ (总298) V C ++与M A T LA B 混合编程的方法研究与实现 2006年户的知识执行上下文知晓算法[10]之后,获得知识结点序列供用户选择。

用户选择其中之一后,知识查询模块将通过GetData接口实现对TAP知识库的查找,获得查询结果。

相关文档
最新文档