VC_与MATLAB混合编程的方法研究与实现_柏晟
- 格式:pdf
- 大小:174.39 KB
- 文档页数:3
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与VC++的优缺点,介绍了VC++与Matlab混合编程的几种方法。
通过二者的结合,既有效地利用了MATLAB强大的数值计算能力和众多的函数,大大减少程序设计的工作量,又继承了VC++良好的程序界面,证明是一种很好的程序设计方法。
具体说明了如何应用Matlab引擎实现混合编程以及如何利用MATCOM进行MATLAB和VC++混合编程,并将两种方法用于数字图像处理。
关键词:MATLAB;VC++;MATCOM;引擎;混合编程;图像处理一、引言1、数字图像处理简介:图像技术由高到低分为三个层次:图像处理、图像分析和图像理解。
图像处理是比较底层的操作,它主要在图像像素级上进行处理,处理的数据量非常大。
数字图像处理最基本的目的就是改善图像,主要是按需要进行适当的变换突出某些有用的信息,去除或消弱无用的信息,如改变图像的对比度,去除噪声或强调边缘的处理等,其基本方法有:直方图修正、灰度变换、图像的频域特性、图像平滑、图像锐化等。
直方图是图像的重要统计特征,是表示数字图像中每一灰度级与该灰度级出现的频率数间的统计关系。
直方图能给出该图像的大致描述,如灰度范围、灰度级的分布、整幅图像的平均亮度等,但它不能完整地描述一幅图像。
通常用横坐标表示灰度级,纵坐标表示频数。
通常一幅均匀量化的自然图像由于其灰度直方图分布集中在较窄的低值灰度区间,引起图像的细节看不清楚,为使图像变得清晰,我们可以通过变换使图像的灰度范围拉开或使灰度分布在动态范围内趋于均匀化,从而增加反差,使图像的细节清晰,达到图像增强的目的。
灰度变换是图像增强的一种重要手段,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
灰度变换可分为线性、分段线性、非线性以及其他的灰度变换。
线性灰度变换实际上使曝光不充分的图像中黑的部分更黑,白的部分更白,从而提高对比度。
图像中的边缘或者线条部分与图像频谱中的高频成分相对应,因此采用高通滤波的方法让高频分量顺利通过,使低频分量受到抑制,就可以增强高频的成分,使图像的边缘或者线条变得清晰,实现图像的锐化。
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混合编程的研究
李自胜;向中凡;朱莹;秦赟
【期刊名称】《西华大学学报(自然科学版)》
【年(卷),期】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混合编程实现方法及具体实例研究夏欣【期刊名称】《青岛理工大学学报》【年(卷),期】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], 杨入超因版权原因,仅展示原文概要,查看原文内容请购买。
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混合编程画图实践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。
matlab与vc混编matlab与vc混编-概述篇--转贴自pris学术论坛第一章、详述...第一章、概述matlab就是当今世界上采用最为广为的数学软件,它具备相当强悍的数值排序、数据处理、系统分析、图形表明,甚至符号运算功能,就是一个完备的数学平台,在这个平台上,你只需寥寥数语就可以顺利完成十分复杂的功能,大大提高了工程分析排序的效率。
另外由于matlab的广为采用,于是发生了向各个领域专门采用的工具箱(即为在某一研究领域常用数学工具的函数纸盒),这些工具箱的发生更加推动了matlab的盛行。
matlab强大的功能只能在它所提供的平台上才能使用,也就是说,你必需在安装有matlab系统的机器上采用.m文件,这样就给工程排序增添了非常大不便;特别就是,在matlab中,并使用的行解释方式执行代码,这样大大地限制了代码执行速度。
于是人们想到,能否开发一个matlab与其他高级语言的USB,这样就可以把matlab的强悍功能带入各种应用程序中,并且通过高级语言编译器编译为2进制代码,从而大大提高了执行速度。
1.用matlab的mcc将.m文件翻译为cpp源文件,然后在c编译器中调用也可以用mcc编程编程为stand-alone程序。
是我最喜欢用的方法。
方法1和2/3各有利弊,1不积极支持图形(积极支持图形的库国内现在还没d),1对类积极支持也比较,2积极支持绝大多数的matlab语句(包含图形),但对于struct等的积极支持也有缺陷。
vc++中使用matlab的c++数学库和mcc生成的程序0、概述matlab5.3的提供了c/c++数学库,其中的c++数学库功能很强,使用它可以用类似matlab的语法编写c++程序,十分方便。
虽然速度上仍然比手工c/c++程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。
另外mcc命令可以将m文件转化为c或cpp文件,编译后可以脱离matlab运行,它们也是使用的c/c++数学库。
vc和matlab的混合编程-Silence的日志-网易博客vc和matlab的混合编程技术 2008-10-29 23:14:29 阅读60 评论0 字号:大小订阅matlab真的是一个好东西,它的介绍我就不说啦,自己google 去,matlab在数学处理、数字图像方面的研究有很好的应用,只是他在与其他例如vc,vb,java的接合上显得比较的困难,似乎大家都在探讨这方面的问题,经过这些天的猛看猛试验,最终在matlab的COM接合上实现突破,并且正如matlab推荐的那样,真的非常的方便和通用,几乎可以处理所有的函数,包括图形图像的处理函数。
一般来说,vc调用matlab混合编程有以下几个途径:一、通过Matlab Engine方式Matlab Engine是指一组Matlab提供的接口函数,支持C语言, Matlab Engine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C程序作为前台客户机,通过Windows的动态控件与服务器通信,向Matlab Engine传递命令和数据信息,从Matlab Engine接受数据信息。
用户可以在前台应用程序中调用这些接口函数,实现对Matlab Engine的控制。
采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可行,我认为适合个人使用或做演示用,因此不打算介绍。
二、直接调用Matlab的C/C++数学函数库Matlab中提供了可以供C/C++语言调用的C/C++数学函数库,其中包含了大量用C\C++语言重新编写的Matlab数学函数,这些函数涉及到线形代数、数值分析、傅立叶变换、多项式计算、解微分方程等,并且函数库中提供了大量各种矩阵操作函数,在VC中可以直接使用这些函数,通过这些函数可以在VC中方便的实现在Matlab中矩阵运算功能。
联合编程的操作步骤首先,我先说一下我所安装的环境,我的电脑是Win7(X64)的,我安装的Matlab是Matlab R2010b和VS2010,还有Matcom4.5我Matlab的安装目录:C:\Program Files\MATLAB我VS的安装目录:F:\Program Files (x86)\Microsoft Visual Studio 10.0一、Matlab环境配置在Matlab的Command Windows下输入命令:mbuild -setup然后输入命令:mex–setup 方法同上mbuild–setup一样。
在Matlab中编写想要实现的.m文件。
我以最简单的.m文件为例:function [c]=Myadd(a,b)c=a+b;在命令窗口编写:会在当前目录下生成如下图中显示的文件:其中重点会用到的是.cpp、.h、,dll、.lib文件。
在头文件的最后,你可以看到下面的内容:externLIB_myadd_CPP_API void MW_CALL_CONV myadd(intnargout, mwArray& c, constmwArray& a, constmwArray& b);这就是myadd的C函数的声明。
nargout表示输出变量的个数,其他就是对应了m函数的几个变量。
二、Matcom设置准备工作在Matcom中编写函数文件:保存后,点击compile to DLL,生成DLL文件默认在matcom安装目录debug 文件夹下面。
会生成如下图所示的文件:主要用到的还是.dll、.h、.lib等文件。
不过在VS中调用时,需要将matcom安装目录lib文件夹下的matlib.h和v4501.lib拷贝到工程文件夹下。
并且要将翻译生产的文件(.dll、.h、.lib等文件)也复制粘贴到工程目录下。
且在stdafx.h中要包含matlib.h。
浅谈实现VC++与MATLAB混合编程摘要:本文深入分析了vc++与matlab两种编程语言的特点,充分发挥了两种语言的优点,实现混合编程。
并在弹箭弹道参数相对于气动参数的灵敏度分析过程中进行了验证,直观方便地利用灵敏度函数对气动参数加以辨识,得出弹道参数模型,并进行弹道计算。
关键词:编程混合编程灵敏度matlab是一种以矩阵为基本运算单位的高效数值计算软件,带有功能强大的数学函数库,并开发有多种学科领域的工具箱函数库,广泛地应用于科学研究与工程计算。
vc++用于面向对象的可视化编程,可以完成从底层软件直到面向用户软件等各种应用程序的开发。
利用它提供的各种实用工具,开发者可以轻松开发出高效强大的windows应用程序。
把matlab在数值计算、算法设计以及数据可视化等领域的优势与vc++应用系统集成,不仅可以完全满足系统在数据运算与表现方面的需求,而且还可提高系统处理的效率和稳定性,同时也减少了开发人员实现算法的困难,缩短了软件开发的周期,提高了软件质量,在实践中具有很高的使用价值。
1 mlrs/m26多管火箭弹弹道所谓弹道是指弹箭在空中飞行时,其质心所经过的路线,它是一条空间曲线。
从弹箭侧面看,弹道的投影如图1所示:利用现代控制理论、弹箭飞行动力学、数值分析、随机过程、弹箭设计理论以及计算机仿真等理论,分析弹箭弹道参数对气动系统灵敏度函数问题,以matlab和vc为操作平台,制作用户操作界面。
2 vc++与matlab混合编程的优点vc++用于面向对象的可视化编程,开发者可以轻松开发出高效强大的windows应用程序,利用它提供的各种实用工具,可以完成从底层软件直到面向用户软件等各种应用程序的开发。
但在实际工程开发中,与matlab相比:①matlab比vc++在数值处理分析和算法工具等方面更优异。
②matlab比vc++在准确方便地绘制数据图形方面更完善。
matlab具有强大的数值计算功能,matlab中提供了大量用c\c++重新编写的matlab库函数,matlab自身存在一些缺点限制了它在更多方面的应用,主要包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、特殊数学函数、插值函数等,这些缺点主要包括:①容易被直接读取,所以难以保护劳动者的成果,matlab编写的m文件大多是文本文件。
MATLAB 与 VC 混合编程SCIE摘要:MATLAB 提供了很丰富的编程接口,可以通过这些接口使用其它语言来编写模块集成到 MATLAB 程序中,也可以在其它程序设计语言中调用 MATLAB 。
尽管如此,在某些情况下可能仍然不能满足某些特殊的要求, 本文从实际应用出发, 介绍了 MATLAB 与 VC 混合编程的一些方法。
需要特别说明的是:本文内容是针对MATLAB6.5和 VC6.0的,并不适应于其它版本的 MATLAB 。
关键词:混合编程 MATLAB VC 窗口嵌入一、 VC中使用编译得到的 C++源程序文件通过 MATLAB 的编译器我们可以将 m 代码编译为独立的可执行程序,从而达到脱离 MATLAB 、在未安装 MATLAB 的计算机上发布的目的。
但是这样做仍然不能满足如下要求: MATLAB设计的图形用户界面功能还不够强大,不支持表格、目录树以及分组单选按钮等控件;当在一个 GUI 中放置过多的控件时,速度会比较慢。
整个软件并不是以 MATLAB 为主开发的,需要把 MATLAB 编写的代码融合到软件主体中,而不是生成独立的程序。
需要修改 MALTAB 编译器自动生成的代码, 或在其中添加代码以实现特定的功能。
将 m 文件编译生成 C 或者 C ++代码,在 VC 中使用这些代码,就可以解决以上几个或者更多的问题。
在此之前,需要对 VC 的开发环境进行设置,添加MATLAB 的 Include 目录和 Library 目录,操作如下:启动 VC ,点击菜单 Tools-Options ,出现如下对话框:图表 1设置 Include 目录¾在 Show directories for下方的下拉框中选择 Include files,在 Directories 下方列表框的空白一行或者单击 Directories 右方的左起第一个按钮, 添加如下两个目录: $matlabroot\extern\include\cpp$matlabroot\extern\include¾在 Show directories for下方的下拉框中选择 Include files,在 Directories 下方列表框的空白一行或者单击 Directories 右方的左起第一个按钮, 添加如下两个目录: $matlabroot\extern\include\cpp$matlabroot\extern\include其中 $matlabroot为 MATLAB 的安装目录,如图表 2所示。
VC++与Matlab混合编程的快速实现刘建伟吉林大学朝阳校区电子科学与工程学院电子信息工程系(长春 130026)摘要:许多工程软件需要用到复杂的数学算法。
VC++能够形成各种用户界面,并可以直接与系统及底层硬件交换数据。
因此研究VC++和Matlab 的混合编程具有很大的实际意义。
该文讨论了如何使用Matlab 的Complier 将*.m函数编译为动态链接库DLL,提供给VC++调用的方法,提供了一种VC++与Matlab 混合编程的快速实现。
关键词: Matlab VC++ MCC Complier 动态链接库DLLMatlab 作为当今世界上应用最为广泛的数学软件,具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能。
已经在如生物工程,图像处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域得到广泛的应用。
它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。
但是Matlab 强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab 系统的机器上才能执行*.m 文件。
这样当用户需要将在Matlab 下已开发完毕的复杂算法应用到高级语言开发环境下时就带来了问题,是将现成的东西集成高级语言开发的程序中呢?还是用高级语言再重新实现一遍?显然大家所期望的是减少工作量,最好能将Matlab 下开发好的程序或函数直接应用到高级语言开发的程序中,这就是Matlab 与高级语言的混合编程问题。
VC++是当前Windows 下的主要编程语言之一,它能方便地形成应用软件中所需要的各种用户界面和工具并直接与系统及底层硬件交换数据。
用VC++开发的系统具有容易维护升级、界面友好、代码效率高、执行速度快等一系列优点,因此已成为目前应用软件开发中广泛采用的主要工具之一因此,如何将Matlab 与VC++进行有效的混合编程广受工程科研人员的关注。
第7卷 第21期 2007年11月167121819(2007)2125685203 科 学 技 术 与 工 程Science Technol ogy and Engineering Vol .7 No .21 Nov .2007Ζ 2007 Sci .Tech .Engng .VC ++与Ma tl ab /Si m uli n k 混合编程的实现与研究曹罗生(湖南益阳职业技术学院计算机系,益阳413000)摘 要 介绍了将Matlab /Si m ulink 模型转换成目标语言模型的方法。
避免了模型仿真速度慢的问题,且降低了目标语言编程建模的工作强度。
重点探讨了VC ++与M atlab /Si m ulink 进行混合编程的方法,运用这些方法,可以在VC ++中方便地使用M atlab /Si m ulink 的数值计算能力。
关键词 仿真 RT W Si m ulink /Matlab VC ++中图法分类号 TP311; 文献标识码 A2007年7月4日收到 Matlab /Si m ulink 是近年应用广泛的一种科学计算仿真软件,但对于一些仿真实时性要求较高的场合,如串口通信、数据采集等仿真任务时,Matlab 环境就难以胜任。
C /C ++语言是一种执行效率较高的语言,将它与Real —Ti m e Workshop (RT W )子集相结合,采用C ++与Matlab 混合编程技术就可以实现Matlab /Si m ulink 模型向C /C ++语言模型的转换,满足仿真实时性的要求。
1 RT W 简介RT W 是和Matlab /Si m ulink 一起使用的一个工具,它可以直接从Si m ulink 模型生成代码,并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。
RT W 的应用场合十分广泛,主要包括以下几个方面:⑴实时控制:可以使用Matlab /Si m ulink 设计控制系统,并且从建立的图表模型生成代码,编译并载入它们到目标硬件。
::首页>> 文档中心>> 在线杂志>> 其它[ 在线杂志第42期][ 原创文档本文适合中级读者已阅读231次]浅析VC与Matlab联合编程(二)作者:邓科下载源代码在“浅析VC与Matlab联合编程(一)”中简单介绍了VC与matcom的接口编程,实现本功能,要真正熟练使用接口编程,还要对函数调用有一定了解。
本文通过一个实例,较详细的介编译后的函数。
首先新建一个函数huatu.m,该函数的功能是:接受用户输入的左端点值和右端点值两个输图形。
函数还将生成两个随机数,作为一个点的坐标在图中打印出来(绿点),用来说明如何在步骤如下:1.建立一个名为Example2基于对话框的MFC(exe)工程。
2.在matcom中新建一个名为huatu.m文件,如图1;图13.在matcom命令窗口中运行该函数,如图2;图24.将生成的huatu.h、huatu.cpp(默认位置为安装目录:\matcom45\samples\Debug)和ma 为安装目录:\matcom45\lib)四个文件拷贝到建立的工程Example2目录下。
5.将第四步拷贝的四个文件加入到VC工程中:工程->添加工程->文件,选择刚才拷贝到Exa 成后如图3;图36.在Example2dlg.cpp中添加头文件:(如图4所示)#include "matlib.h"#include "huatu.h"图47.为工程建立界面:添加一个Button按扭控件;添加四个Edit box控件,用于显示数据;添加显示文字,一个显示图形,将显示图形的Static text的ID设置为ID_PIC。
其他所有控件属性保适当调整显示图形Static text控件的边缘)。
如图5所示图58.按Ctrl+W为控件添加变量。
如图6所示图69.为Button1按钮添加响应代码。
如图7所示图710.运行程序,输入左端点和右端点,点击”画图”按钮,结果如图8所示。
Matlab 与VC 混合编程的方法研究李 雯(宝鸡职业技术学院电子信息工程系,721000)摘要:Matlab 与VC 是应用范围较广的编程语言,将二者进行混编是计算机软件领域人士一直思考的重要课题。
本文就如何实现二者的完美结合进行了深入的探讨。
关键词:Matlab ;VC ;混合编程Matlab and VC mixed programming methodLi Wen(Baoji professional technology institute,Department of electronic and information engineering,721000)Abstract :Matlab an d VC is the programming language has a wide application scope,will be to mix both people in the field of computer software has been a important subject.In this paper,how to achieve the perfect combination of the two had in-depth discussion.Keywords :Matlab;VC;Mixed programming Matlab,其全称为MATrix LABoratory,中文翻译为矩阵实验室,它是由美国The MathWorks 公司出品的商业数学软件,其主要功能是数值计算,而VC 语言作为系统设计语言,在编写计算机程序时有着广泛的应用,然而,Matlab 与VC 语言由于各种原因的限制导致二者之间的编程无法共存,这给开发者带来了不小的麻烦。
近年来随着编程方法的日益成熟,二者之间互不兼容的现象得到了改善,特别是Matlab2010的研发不仅保存了传统的Matlab7.0编译器基本构架稳定的优势,而且开发了新的功能,使得混编程序向下兼容性越来越好,但二者混编以后仍然会出现结构不稳定的现象。
文章编号: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知识库的查找,获得查询结果。