Matlab与+VB、+VC高级语言的接口方法
VB和Matlab传递数据

VB和Matlab传递数据lb107VB和Matlab传递数据请问:我想将m函数文件编译成dll文件,在VB里面输入数据然后调用这个dll进行计算,这样能够实现吗?有兄弟有相关的例子没?网上VC调用Matlab的例子挺多的,但没有VB调用Matlab的例子。
谢谢指点。
2006-3-5 20:19 taoheRe:VB和Matlab传递数据VB调用DLL会不会很复杂?总感觉VB属于高级编程语言,在调用DLL方面不会比VC更难才对。
根据网上你发现的VC调用MATLAB产生的DLL的例子,大概了解MATLAB产生的DLL,然后在VB中调用,貌似应该顺理成章。
使用VB的话,一个好的方案可能是使用MATLAB产生的COM组件,而不是普通的DLL。
在VB中可以很方便地使用这些COM组件。
MATLAB的在线帮助有较详细的例子,不妨看看。
2006-3-5 23:01 bainhomeRe:VB和Matlab传递数据前一段儿看了看书,做过两个简单的,下面这个是其中之一(曾发在别的论坛上,转一下),因最近实在是太忙,没有时间研究,所以比较基础,没有更加复杂的Trick 比如将VBtext中的数组作为COM的input、图形绘制等等,VB代码:[code] Private addn As addn.AddPrivate Sub Command1_Click()Dim x As DoubleDim y As Variantx = CDbl(Text1.Text)Call addn.numadd(1, y, x)Text2.Text = yEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Set addn = New addn.AddForm1.Caption = "VB调用MATLAB示例"Text1.Text = 2End Sub[/code][code] function y=numadd(x)y=2*x; [/code]COM组件调用格式:[code]call h.func(numout,arg1,arg2,...)[/code]MATLAB中的函数书写格式:[code][out1,out2,out3]=myfunc(arg1,arg2)[/code]则VB的调用应该为:[code]callobject.myfunc(3,out1inVB,out2inVB,out3inVB,arg1inVB,arg2inVB)[/code] “3”指的是输出变量的数目另外当多个版本的MATLAB在同一PC上时,VB只认其中一个版本产生的COM,不知道是不是环境变量设置的问题。
MATLAB与外部程序接口

• 15.1.1 MEX文件 • MEX文件是一种具有特定格式的文件;是
能够被MATLAB解释器识别并执行的动态链 接函数。它可由C语言等高级语言编写。
15.1.2 mx-函数库和MEX文件的区别
• 1.mx-函数库 • 2.mex-函数库
15.3 MATLAB可执行程序
• 15.3.1 接口函数mexFunction • 接口函数mexFunction的调用格式如下: • void mexFunction(int nlhs,mxArray
*plhs[],int nrhs,const mxArray *prhs[])
15.3.2 在Visual C++中实现 MATLAB可执行程序
• 下述程序输出一个正弦曲线,其中 mexCallMATLAB调用了MATLAB中的绘 图函数。
15.2.2 FORTRAN语言MEX文件
• 与C语言相同,FORTRAN语言也可以实现 同MATLAB语言的通信。相应地,基于 FORTRAN语言的MEX文件也是MATLAB应 用程序接口的重要组成部分。
15.1.3 MAT文件
• MAT文件是MATLAB数据存储的默认文件 格式,在MATLAB环境下生成的数据存储时, 都是以.mat作为扩展名。MAT文件由文件 头、变量名和变量数据三部分组成。
15.2 MEX文件的编辑与使用
• 15.2.1 C语言MEX文件的编写 • 例:传递一个数量 • 这是一个C语言程序,用来求解一个数量
• 创建DLL工程 • 选择静态链接的MFC类库 • 设定输出函数 • 环境设置 • 编写DLL主程序
的2倍。 • 例:传递字符串 • 这个函数的功能使将输入字符串反序排列。
• 例:传递多个输入或输出变量
将MATLAB函数转化为VisualBasic程序可用的DLL的方法

仿 真 等 高 级 课 程 的 基 本 教 学 工具 。
M i o o t公 司 推 出 的 Viu lB s 是 c sf r sa ai c
一
个优 秀 的 编程 工具 , 用 编 译 器和 控 件 , 利
VB应 用 程 序 能 在 速 度 和 扩 展 能 力 上 与 c+ 十 应 用 程 序 相 媲 美 , 避 开 了 c+ + 编 程 过 它 分 繁 琐 和 抽 象 的 缺 点 , 时 又 能 实 现 大 多 数 同 W id ws编 程 目 的 , no vB成 为 了 一 种 十 分 强 大 和 有 生 命 力 的 W id ws编 程 语 言 。 no
i t Viu l n he s a Ba i a p ia i n , h o g a i l s mpl t e n io me t o sc p l to s t r u h smp e a c e h e v r n n s f
c om pii g a e alo di c s d i ln r s s us e n det i. al
作 着 椅 升 臻 冬 梅 l 9 一 . . 西 运 城 人 . ± 生 肝 究 方 向 : 电 检 硼 及 其 自动 化 17 ) 女 山 砸 光
《 脑 与 信 息 技 术 } 0 2年 第 1期 电 20
・6 1・
维普资讯
译 为 动 态 连 接库 供 其 它 程 序 调 用 。利 用 VC 将 M ATI AB 函数 转 化 为 VB可 直 接 调 用 的 动 态 连 接 库 , 统 中 没 有 安 装 MATL 系 AB 时 仍 能 利 用 M ATIAB 的数 值 计 算 功 能 。 另 外
C#,JAVAMATLAB混合编程技术简介论文

C#,JAVA与MATLAB混合编程技术简介【摘要】本文阐述了当今最为流行的面向对象的可视化编程工具 c#, java与计算及绘图功能强大的matlab之间的接口技术,从而进行相互融合,更好地体现各自的优越性。
【关键词】 c#,java 混合编程【中图分类号】g434 【文献标识码】 a【文章编号】 1006-5962(2012)06(a)-0185-01引言matlab具有强大的矩阵运算、数值分析、信号处理、系统识别、图像语音处理等功能。
而应用matlab软件可以很方便地实现许多复杂的数学算法,而这些复杂的算法在其他开发环境中需要大量代码才能实现。
尤其是图像处理等方面,matlab具有其他编程语言无法比拟的优点。
但matlab也有不足之处,如在数据输入、硬件控制等方面相对较弱,程序执行速度也相对较慢,且一般需要在matlab环境下运行。
所以在解决实际工程问题时往往将matlab与其他高级语言混合编程,将matlab强大的数学功能服务于其他开发环境。
c#,java这两种高级面向对象程序语言在跨平台、多线程、动态性、面向对象等方面具有很强的优越性。
然而在数据分析和处理方面的能力不像其等优点那么突出,尤其是在对数组矩阵之类数据进行操作及图像处理时会因为多次循环而速度变得缓慢,这在数组或矩阵维数很大时尤其明显。
因此将这两种语言和matlab实现混合编程,从而达到优势互补,就显得尤为重要了。
本文阐述了c#,java与matlab混合编程的接口技术。
1 混合编程1.1 混合编程基本思想在一个应用软件的开发周期中,把不同阶段的算法和数据处理交给在这方面具有优势的编程语言或软件。
编程人员无需为实现某种算法和操作专门写程序代码,程序员只要把精力集中在不同软件之间数据通讯的问题上。
相比用单一语言开发同等性能的程序,它需更少的时间,大大缩短了开发时间。
1.2 混合编程适用条件混合编程所要解决的问题一般具备以下几个特征:①不同软件间数据通讯方便;②不同编程语言实现相同算法效率相差很大;③不同软件间除了数据通讯。
VB与Matlab混合编程的研究

第25卷第1期2007年1月北京工商大学学报(自然科学版)Journal of Beiji ng Technology and Business University(Natural S cience Edition)V ol 125N o 11Jan.2007文章编号:1671-1513(2007)01-0038-04VB 与Matlab 混合编程的研究梁新成, 黄志刚, 朱 慧(北京工商大学机械自动化学院,北京 100037)摘 要:较系统地总结了VB 与M atlab 调用的原理和方法,给出了一些实例,通过这些方法,可使VB 的可视化界面和M atlab 强大的计算及绘图功能得以实现,从而提高编程的效率,缩短软件开发的周期.关键词:Matlab;VB;ActiveX;DDE;无缝链接中图分类号:TP 131 文献标识码:A 收稿日期:20061101作者简介:梁新成(1978)),男,陕西华县人,硕士研究生,研究方向为机械制造及自动化;黄志刚(1966)),男,上海人,副教授,博士,主要从事车辆工程、农产品加工及贮藏工程的研究.V isual Basic(以下简称VB)语言是M icrosoft 公司开发的新一代面向对象的编程工具.它既是一种编程语言,同时也是一个强大的集成开发环境,利用它可以编写出具有各种风格且界面友好的软件产品.它继承了Basic 简单、易用的特点,并具有可视化、面向对象、部件技术、事件驱动等一系列特性,成为Windows 环境下最快捷、便利和通用的开发工具.作为可视化编程的先驱和典范,其所展现的可视化风格,已经成为诸多可视化集成开发工具的参考标准.Matlab 是M athWorks 公司在20世纪80年代开发的科学计算软件,经过不断地完善和发展,目前Matlab 已经成为涉及多学科、多领域的计算和分析平台.Matlab 编程代码很接近数学推导格式,简洁直观,符合人们的思维习惯,所以编程非常方便.由于VB 提供的计算和绘图函数有限,M atlab 创建图形用户界面的能力相对较弱,因此用VB 编写界面,用Matlab 作为后台运行程序,使两者相得益彰.1 VB 和Matlab 混合编程的方法和算例由于Matlab 本身只提供了Fortran 、C 语言的接口程序,所以无法直接实现VB 对Matlab 的调用.故Matlab 与VB 混合编程中需要解决的关键是如何实现在VB 中调用Matlab.Matlab 与VB 混合编程的方法主要有下面4种.111 ActiveX 技术ActiveX 技术是以组件对象模型(component object model,COM)技术为基础的一种应用程序开发技术和体系结构的总称,它是Microsoft 公司提供的一种用于模块集成的新协议,它允许应用程序或组件控制另一个应用程序或组件的运行.M atlab5.0以上的版本均支持ActiveX 的嵌入.因为VB 支持ActiveX 自动化控制端协议,Matlab 支持ActiveX 自动化服务器端协议[1],所以VB 和Matlab 的通信有两种:一种是自动化服务器,另一种是自动化控制器.本文重点探讨VB 如何通过ActiveX 接口将M atlab 作为VB 的一个ActiveX 部件,实现数值计算和图形显示.要实现这种功能,用户首先必须获得M atlab ActiveX 对象在系统注册表中定义的名字$M atlab.Application.在所编写的程序中必须有如下的代码:Dim Matlab as ObjectSet.Set Matlab =CreateObject (/Matlab.Applica -tion 0),M atlab.Application 对象主要有3个函数,具体如下:1)Function Execute (Command as String )as String.VB 可执行一条由Command 字符串决定的M atlab 指令或在M atlab 的工作空间调用M 函数文件,在屏幕上显示图形或计算结果.2)Sub GetFullM atrix (Matr -Nam e as String,Workspace as String ,Var -Real()as Double,Var -38Imag()as Double).通过GetFullMatrix 方法,VB 从指定的M atlab 工作空间中获取指定变量名的矩阵数据.3)Sub PutFullM atrix (Matr -Name as String,Workspace as String,Var -Real()as Double,Var -Imag()as Double).VB 可以将指定变量名的矩阵数据保存到M at -lab 的工作空间中去.下面的简单例子通过ActiveX 技术实现VB 对M atalb 的调用.在VB 下创建工程,给窗体加上两个控件.一个控件是text1,将其属性中的text 项设置为空;另一个控件是comm and1,将其属性的cap -tion 项设置为result.程序的代码如下:Private Sub Command1-Click()Dim result as String Dim Matlab as ObjectSet M atlab=CreateObject(/Matlab.Appl-ication 0)Result=Matlab.ex ecute(text1.T ext)End 运行后,在tex t1中输入如下代码:[x,y ]=meshgrid(-3:.125:3); z=peaks(x,y ); meshc(x,y,z); g rid on;程序的运行结果见图1.图1 A ctiv eX 方式运行结果112 DDE 动态数据交换M atlab 从V41x 开始支持DDE (dy nam ic data exchange),最典型的是LabVIEW 对DDE 的使用.但从V51x 以后,Matlab 对DDE 的支持就没有再更新.DDE 的功能没有ActiveX 强大,但它比ActiveX 易于实现.它随着Windows 的应用而发展起来,是在Window s 环境下支持客户服务器计算模式的重要技术之一.因为VB 支持DDE 客户端功能,M at -lab 提供DDE 服务器功能,所以通过DDE 方式可以实现VB 程序对Matlab 的调用.DDE 功能函数可以由应用程序提供,也可以由M atlab 引擎库提供.VB 应用程序首先通过确定服务器名和主题,唯一地确定会话.在会话期间VB 应用程序为客户端,M atlab 为服务器端.两者会话的示意如图2.图2 DDE 通信机理示意DDE 方式基于Windows 的消息机制.DDE 服务器是一个维护其它Windows 程序可能使用数据的程序,DDE 客户则是从服务器获得数据的程序.DDE 对话由客户程序发起,客户程序将一条称为WM )DDE )INIT IAT E 的消息发给当前运行的所有Window s 程序,这条消息指出客户程序所需要的数据类别,拥有这些数据的DDE 服务器可以响应消息并开始会话[2].DDE 只是一种通信方式,它不会启动M atlab 软件,所以DDE 方式运行时M atlab 必须打开,否则程序无法运行.下例将实现DDE 通信方式.在VB 下建立工程,然后添加两个TextBox 控件,3个Label 控件,一个Com mand 控件,一个Im age 控件.输入如下的代码,然后编译成.EXE 文件后即可.此编译文件提供了M atlab 的运行环境,在指令输入区可输入任何M atlab 指令[3].程序代码如下:Private Sub Command1-Click()TextInput.LinkMode=vbLinkNoneTextInput.LinkTopic=/MATLAB|Engine 0TextInput.LinkItem=/EngEvalString 0TextInput.LinkMode=vbLinkM anual string =TextInput.T ex tTextInput.LinkEx ecute stringTextInput.LinkMode=vbLinkNoneFigText.LinkM ode=vbLinkNoneFigText.LinkTopic=/MATLAB|Engine 0FigText.LinkItem =/EngFig ureResult 0FigText.LinkM ode=vbLinkManual FigText.LinkRequestIf (FigT ext.Text=/yes 0)ThenImage1.Picture=Clipboard.GetData()ElseImage1.Picture=LoadPicture39第25卷第1期 梁新成等:V B 与M atlab 混合编程的研究End IfT ex tOutput.LinkMode=vbLinkNoneT ex tOutput.LinkTopic=/MAT LAB|Engine 0T ex tOutput.LinkItem=/EngStringResult 0T ex tOutput.LinkMode=vbLinkManualT ex tOutput.LinkRequestT ex tOutput.LinkMode=vbLinkNone End Sub程序运行结果见图3.图3 DDE 方式运行结果113 MatrixVB 插件M atrixVB 可实现M atlab 与VB 的无缝链接.所谓无缝链接就是应用程序实现其功能时完全脱离M atlab 的工作环境.它主要是利用Matlab Add-in 把M atlab 函数做成动态链接库形式,然后由VB 调用来实现.动态链接库的生成、调用和调试是这种方法的关键.M atrixVB 是M athWorks 公司为VB 开发的插件,它包含了600多条M atlab 的基本函数,插件增强了VB 绘图和计算的函数集合.它包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,用来补充VB 本身内建函数和图形处理的不足.为了防止计算机在识别M a -trixVB 和VB 的运算符时发生冲突,M atrix VB 在定义运算符时做了一些变化.VB 与M atrix VB 中的运算符号区别如表1[4]:表1 VB 与MatrixVB 的运算符号Visual BasicM atri x VB Visual BasicM atrixVB a+b plus(a,b)a \b ldivide(a,b)a-b minus(a,b)a^b pow er(a,b)a @b mti m es(a,b)b-a uminus(a,b)a/brdivide(a,b)a M od bmmod(a,b)安装MatrixVB 后,打开VB,点击工程y 引用,然后选中M Matrix 后就可以在VB 中使用此插件.下面的程序通过M atrix VB 实现VB 对Matlab 的调用.程序的运行代码如下:Private sub Form -Load()ax =vbaxes(picture1.hWnd) plot(randn(256,4))End程序运行结果如图4.图4 M atrix VB 方式运行结果114 动态链接库从M atlab615开始[5],M atlab 提供了COM 编译器.它是Matlab 编译器的扩展,能够把一个和多个M 文件转换、编译成COM 组件.因为M atlab 编译产生的COM 对象都是DLL 文件,而VB 可以直接调用DLL,所以应用DLL 可实现VB 对Matlab 的调用.具体步骤:在计算机装有VC++或C 的前提下,在Matlab 的命令窗口运行comtool 指令.选择新建工程y 给工程加入M 文件或MEX 文件y 编译;之后再在VB 下新建工程y 添加所生成的动态库y 添加控件y 给相关控件输入代码y 运行即可.M 文件必须以function 关键字开头,不能是脚本文件,更详细的内容请参阅文献[6].2 几种方法的比较利用ActiveX 进行VB 和M atlab 的交互通信时,所采用的Matlab 语句是直接使用Matlab 提供的函数和图形库命令.该方法编程效率高,但程序的执行必须在Matlab 环境下,这样会占用内存,使程序的执行速度受一定影响.DDE 方式运行时,必须打开M atlab 的命令窗口.程序编码简单,但占用系统资源多,效率低下,功能相对较弱.与ActiveX 的区别是,DDE 必须预先打开Matlab,而ActiveX 可自动打开Matlab 软件.MatrixVB 把与Matlab 相似的语法和函数嵌入到VB 中,这种方法比较简单,编程的效率高.但由于仍采用解释执行的方式,因此执行的效率低,难以40北京工商大学学报(自然科学版) 2007年1月进行实时处理.与Matlab 相比,MatriVB 包含的函数少,没有M atlab 的功能强大.把Matlab 文件编译成VB 可以执行的dll 文件,执行的效率高,但当M 文件一旦编译成功之后,其功能就不能变化,所编程序的数据交换能力弱.总之,以上各种方法皆有利弊,应根据实际情况进行选择,才能更好地发挥两者功能.3 结束语通过对Matlab 和VB 的混合编程,可以将VB 开发的界面与Matlab 强大的计算和显示功能融为一个整体,使开发的程序周期缩短,编程效率得以提高.参考文献:[1] 谭炎,张凌燕.M atlab 与V B 混合编程研究[J].微计算机信息(管控一体化),2006,22(53):248249.[2] 高剑.M atlab 与V B 混合编程方法[J].微机发展,2003,13(3):9192.[3] 张志涌.精通M AT L AB6.5[M ].北京:北京航空航天出版社,2003.[4] T he MathWor ks Inc.M atr ix VB Guide [Z ].T he M ath -Wor ks Inc,2000.[5] 董维国.深入浅出MA T LAB7.x 混合编程[M ].北京:机械工业出版社,2006.[6] 李俐玲.V B 与M atlab 相结合混合编程的研究[J].绵阳师范学院学报,2004,23(5):2628.RESEARCH OF MIXING PROGRAM OF VB AND MATLABLIANG Xin -cheng, H UANG Zh-i gang, ZHU Hui(College of Mechanical Engineer ing and Automation ,Beijing Technologyand Business Univer sity ,Beij ing 100037,China)Abstract :This paper described generally methods and principle of VB how to transfer M atlab.T hrough the gaved ex amples,w e can turn the visual interface and the powerful function of M atlab .s calculating and ploting into reality.T hat w ould enhance the efficiency of programm ing ,and shorten the period of empoldering softw are.Key words:Matlab;VB;ActiveX;DDE;Link w ith no slot(责任编辑:檀彩莲)(上接第31页)DESIGN OF SMALL NETWORK OF INTELLIGENTNODE ON CANBUSXING Liang, ZHANG Li, M ENG Chun -ling(College of Mechanical Engineer ing and Automation ,Beijing Technologyand Business Univer sity ,Beij ing 100037,China)Abstract:CANbus is one kind of Local Bus Technology and mainly used in Data Link Layer and Phys -ical Layer,but the protocol of application layer must be added to realize the material function.De -viceNET and CANopen are most w idely in protocols of application layer,but these protocols are verycomplicated and more fit for large node net.T he technical specification and trait of CAN bus is sim ply introduced in this paper,and it makes a kind of desig n for protocol of application layer in sm all CAN -bus net.Key words:CANbus;protocol of application layer;node(责任编辑:檀彩莲)41第25卷第1期 梁新成等:V B 与M atlab 混合编程的研究。
Labview调用C语言、Matlab脚本节点以及库函数节点的方法

Labview调用C语言、Matlab脚本节点以及库函数节点的方法Labview调用C语言的方法CIN(Code InterfaceNode)节点是LabVIEW中用来调用C/C++代码的功能节点。
它与动态链接库的不同之处在于,它能够将代码集成在VI中作为单独的一个VI发布,而不需要多余的文件。
另外,它提供了函数入口,它可以根据用户提供的输入输出自动生成函数入口代码,从而使用户专心关注代码功能而不用为函数声明、定义等语句费心。
因此CIN节点与DLL在不同的场合有不同的优势,但是CIN节点的使用比调用DLL要复杂得多。
由于LabVIEW中数据的存储格式遵循了C语言中数据的存储格式,并且二者完全相同,所以用户可以向CIN传递任意复合的数据结构。
另外,CIN比图形化语言可获得更高的执行效率。
注意:对于完全相同的代码,CIN和DLL的执行效率是完全一样的。
如果要使用CIN节点,你必须安装了C编译器。
在Windows下,CIN支持以下编译器:Microsoft Visual C++Symantec CCIN节点必须调用.lsb文件。
.lsb文件是通过外部编译器与CINTools工具结合将C代码编译生成的。
下面我们通过一个Step byStep的实例来看如何在LabVIEW中实现CIN节点调用,本例所用外部编译器为MicrosoftVisual C++6.0。
第一步:在程序框图放置一个空CIN节点;CIN节点位于FunctionsPalette的Connectivity->Libraries& Executables->Code InterfaceNode。
第二步:创建CIN节点的输入输出端口;初始情况下,CIN只有一对端口:一个输入端口和一个输出端口。
向下拉大节点边框或右击节点端口选择AddParameter,可以为节点增加输入输出端口。
CIN 节点的端口都是成对出现的,因为CIN节点端口传递的是指针,所以该参数既可以作为输入又可以作为输出。
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)。
六、在vb6.0中调用生成的dll文件1.打开vb6.0,点击工程——引用——浏览,找到放置dll文件处,选择,点击确定;2.vb6.0命令行处应写:Dim myplot As plot.plot1Set myplot = New plot.plot1……Call myplot.plot1(str, strname, xx5, yy2, y)(说明:其中myplot为自己取的名字,plot为matlab编译dll 文件时的class name,plot1为源文件m文件的名字)。
VisualBasic与Matlab接口技术在曲线拟合中的应用
VisualBasic与Matlab接口技术在曲线拟合中的应用
热岛;林大钧;白彦
【期刊名称】《图学学报》
【年(卷),期】2005(026)004
【摘要】MatrixVB是VisualBasic与Matlab的接口,VB采用这个接口来驱动Matlab,使VB和Matlab实现无缝集成.在使用VB进行Windows编程的同时,充分发挥Matlab在图形处理,计算等方面的优势,通过对工程数据进行插值等方法来实现曲线的拟合,进行直观的图形化显示.并举例说明了几种曲线拟合方法在MatrixVB中的使用,及这几种方法的原理,优点和缺点.采用这种接口技术可以方便应用程序的开发和增强应用程序的处理能力,满足工程需要.
【总页数】5页(P141-145)
【作者】热岛;林大钧;白彦
【作者单位】华东理工大学,上海,200237;华东理工大学,上海,200237;华东理工大学,上海,200237
【正文语种】中文
【中图分类】TP391
【相关文献】
1.VC++与Matlab接口编程技术在MRI软件开发中的应用 [J], 王进喜;王晓艳;岳芸;赵昕;王昌元;仲伟纲
2.DXF接口技术研究及其在MATLAB有限元建模中的应用 [J], 于志伟;程圣国;姜
照容;胡祥辉
3.Matlab与Excel接口技术在电力系统数据分析中的应用 [J], 董世君;薛玮;董爱芹;陈众
4.Visual Basic和Matlab接口技术在偏心盾构建模优化中的应用 [J], 王光维; 霍云栋; 骆妤卿; 张子谦
5.MATLAB与Labwindows/CVI接口技术在自动机测试中的应用 [J], 黄成亮;郑宾;黄公亮
因版权原因,仅展示原文概要,查看原文内容请购买。
基于VB与MATLAB接口的PID控制器实现
随着计算机测控技术的发展 , 计算机测控系统作 为 当今工 业控 制 的主流 系统 , 已取 代常规 的模 拟监 测 、 控制 、 显示 等仪 器设 备 , 具有 较 高级且 复杂 的计算 方 并 法 和处理 方法 , 以完 成各 种过程 控 制 , 为生 产管 理人 并 员、 工程 师或操 作员 提供 所需要 的信息 , 以实 现计算 机 监控 的 目的 。V B作 为 一 种 开发 计 算 机 测控 系统 的 应用 软件 , 在工程 中已被普 遍采 用 , 开发 的界 面也深 受 工程技 术人 员 的好 评 。工程 中 , 也通 常 引入 MA L B TA 工 具 以实现对 大 量数 据 的分 析 和处 理 。 因此 , 何 实 如
Absr c : D a a t rt n n s p ro me s d o t n a in c v o a h e e te b s o to tt . e t a t PI p r mee u i g i e r d ba e n at u t ur e t c i v h e te n r lsa e Th f e o i c e sn I c n r li g a g rt m s e i n d n mp e n e y MAT n r a ig P D o toln lo ih i d sg e a d i l me td b LAB r g a p o r mmi g. e n Th ma — - n ma
在VB6.0中调用和操作MATLAB
收 稿 日期 : 初稿 :0 1 1 7 修 订稿 :0 2— 3 8 2 0 —1 —2 ; 2 0 0 —0 作 者简 介 : 郑君 杰( 9 7 ) 男 , 宁大 连人 . 17一 . 辽 信号 与信 息 处理 专 业 硕 士研究 生, 研究 方向 为图像处 理. 模式识 别.
OX文 件 .在 程 序 中 加 入 Acie 部 件 后 将 成 为 开 C t X v 它
郑君杰, 黄
峰( 解放 军理 工 大 学 气 象学 院 研 究 生 1 8队, 江苏 南京 2 10 ) 1 · e HUANG F n ( ieainAr ies yo ce c n n ie r g N n n S 2 1 0 , hn ) i e g L b rt my Unv r t f i ea d E gn ei , a j gJ 1 1 1 C ia o i S n n i
使 用 的 编 程 接 口, 对 广 大 的 VB 程 序 员 来 说 是 一 个 这 很 大 的 不 便 . 本 文 介 绍 了 通 过 A t e 技 术 在 VB . ci X v 60 中调 用 和 操 作 Mal t b的 方 法 , 现 了 Malb和 v 的 a 实 t a B
中图分 类号 : 3 9 TP 1
文 献标识 码 : A
1 引 言 Vi a B s ( 称 VB 是 微 软 公 司 推 出 的 可 视 化 s l ai 简 u c )
混 合 编 程 , 分 发 挥 了 两 者 各 自的 优 势 . 充 2 基本 原理 2 1 A t e 的 基 本 概 念 . ci X v 由 于无 法 在 v 中直 接 调 用 Mal , 者 利 用 A . B tb 笔 a c t e 技 术 解 决 了 这 个 问 题 . 所 谓 的 Acie 是 一 种 开 iX v t X v 放 式 的 标 准 . 允 许 直 用 程 序 或 部 件 控 制 另 一 个 应 用 它 程 序 或 部 件 的 运 行 . A t e 部 件 是 M i oot 司 提 ci X v c sf 公 r
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$ %&’&%&(" 是让 )*!+*, 去掉启动画面并以最 小化方式启动; $ - ) $ .&+" 是让 )*!+*, 启动后自动执行 ) $ 本例中是 !"#!/ 这里文件名 !"#! 不能带扩 .&+" 文件, 展名 / 0 1 2 当 )*!+*, 程序执行完时,需要它能自动 退出 / 只需在 !"#!/ % 文件的最后调用‘34&!’命令 来中止 )*!+*, 程序 / 这种方法的优点是简单易用,便于维护 / 缺 点是交互性差 /
第 /; 卷 第 V 期 / 6 6 , 年 ,/ 月
沈 阳 工 业 大 学 学 报 W(@)9"$ (X Y&B9Z"9[ \98QB)+8#Z (X 1BP&9($([Z
=($0 /; ](0 V LBP0 / 6 6 ,
文章编号: ,666 I ,V<V 3 /66, 4 6V I 6<-; I 6<
第[期
张学典等: !31-3< 与 Y%、 Y, 高级语言的接口方法
L]V
=’> 从 #’?1@(+61 控件中获得当前的 !31-3< 命令字符串并 =’> 发送到 !31-3<A /B,.>>3(C D #’?1@(+61A #’?1 =’> 使 EE& 执行字符串命令 A #’?1@(+61A $9(F&?’G61’ /B,.>>3(C #’?1@(+61A $9(F!.C’ D 7<$9(FH.(’ =’> 在 引 擎 主 题 下 对 控 件 #’?1*61+61 和 >31-3< 之间的 =’> 进行初始化 #’?1*61+61A $9(F!.C’ D 7<$9(FH.(’ #’?1*61+61A $9(F#.+9G D I !"#$"% J &()9(’I #’?1*61+61A $9(F@1’> D I &()8129()=’/6-1I #’?1*61+61A $9(F!.C’ D 7<$9(F!3(63=’> 请求前一个 &()&73-8129() 命令执行的结 果赋值给 =’> 控件 #’?1*61+61A 1’?1A #’?1*61+61A $9(F=’K6’/1 #’?1*61+61A $9(F!.C’ D 7<$9(FH.(’ &(C @: &(C 86< 这种实现方式比较简单,但将增大主程序代 码, 影响运行速度, 且存在一些主要限制 A 如不能 对图像结果进行处理 A
同时,引擎应用程序还可以使用 "5@ 函数, !31-3< 提供了一系列的例程,使得别的程序可以 调用 !31-3<, 从而把 !31-3< 用作一个计算引擎 A !31-3< 同样提供了一个函数库来启动或者结 束 !31-3< 进程、 与 !31-3< 交换数据以及发送 !31N -3< 命令 A
,
中间文件传递法
从严格意义上讲,这种方法不能真正认为是
两种语言的混合编程,但由于这种方法在实现起 来是很方便的, 不要求一些复杂的编程技巧, 因而 对某些课题项目还是很有用的 0 实现的方法是, 用一种自己熟悉的高级语言编写前端用户交互界 面, 并搜集必要的参数信息, 保存在一个中间文件 中 3 如 E")"0 #2# 4 , 然后利用异步程序调用方式执行 !"#$"% 程序 0 在此之前必须用 !"#$"% 语言编写好 一个能完成特定任务的 0 7 文件 3 如 #B+#0 7 4 , 该文 件将从 E")"0 #2# 读取所需的参数信息,执行任务 并返回结果 0 同样 !"#$"% 程序得到的结果也应保 存在一个文件中,供给前端用户程序使用 0 对该 方法应注意两点: 3 , 4 !"#$"% 程序的启动, 对于 => 可以使用下 面的语句来调用 7"#$"% 程序: ( “ F7"#$"%G H %89 H 7"#$"%0 B2B I 789878JB I ) +&B$$
动态连接库 LMM、 动 展开介绍了 !"#$"% 与 =>K =: 进行接口的常用的几种方法 K 即中间文件传递法、 态数据交换 LLN、引擎应用程序、OP#8QBR 自动化服务技术和 !"#P(7 等方法,最后对其效果进行了 小结 0 关 键 词: !"#$"% 软件;接口技术;动态数据交换; OP#8QBR 自动化服务;引擎 文献标识码 T O 中图分类号: 1S ;,,0 ,
H
(55O) 动态数据交换
在高版本的 )*!+*, 中(如 )*!+*, PQ/ H)提供 (5R’*%&I 5*!* O<IK*’S")接 了动态数据交换 55O 口, 用户可以通过 F&’:DG# 的 55O 通信机制实现 外部调用 / 55O 是过程之间的通信机制 ; 它使用 F&’:DG# 消息和共享的内存 ; 使相互合作的应用 程序能够交换数据 / 一般来说,数据的提供者就 是 55O 服务器, 而数据的接受者就是 55O 的客户 机 / )*!+*, 支持它的应用程序以 55O 客户 (55O 方式运行, 因此只需要 PE 或 PA 生成一个 A+&"’!) ( 即可完成两者之间的数 55O 服务器 55O T"-U"-) 据交换任务 / 55O 服务器应用程序使用一个三级 “服务名、 的分级体制 话题名和项目名” 来唯一地 识别服务器应用程序可以在会话中进行交换的数 据单位 / 服务器名是当客户应用程序想要与服务 器应用程序建立会话时,服务器应用程序需要响 应的字符串 / 客户应用程序必须指明这个服务器 名,才能和服务器应用程序建立会话 / 话题名是 用以识别逻辑数据关联的字符串 / 对于基于文件 的文本操作的服务器应用程序,话题名一般就是 文件名; 对于其他服务器应用程序来说, 话题名是 应用程序指定的其他字符串 / 项目名是一个字符 串,用于表示服务器应用程序一次交互可以传给 客户应用程序的数据单位 / 例如,一个项目名可 以是一个数或一个字符串 / 下面是 )*!+*, 和 PE 之间的 55O 通信的例 子: 首先在 P*+ E*#&I 窗体中创建两个文本编 辑 控 件 ="<!9’L4! 和 ="<!V4!L4!/ 下 面 的 代 码 是 ="<!9’L4! 控件中 JW"R8-"## 消息的响应方法 / T4, ="<!9’L4!JW"R8-"## 0 W"R7#I&& 7# 9’!"S"- 2 9. W"R7#I&& X U,W"RY"!4-’ !K"’ Y"% 在引擎主题下对控件 ="<!9’L4! 和 %*!+*, 之间的 Y"% 进行初始化 -"% T"! !K" &!"% !D O’SOU*+T!-&’S/ ="<!9’L4!/ 6&’Z)D:" X U,6&’Z[D’" ="<!9’L4!/ 6&’Z=DL&I X \ )7=67E ] O’S&’"\ ="<!9’L4!/ 6&’Z9!"% X \ O’SOU*+T!-&’S\ ="<!9’L4!/ 6&’Z)D:" X U,6&’Z)*’4*+
!"#$"% 与 =>、 =: 高级语言的接口方法
张学典 , ,赵学玲 / ,许家群 ,K 唐任远 ,
(,0 沈阳工业大学 特种电机研究所,辽宁 沈阳 ,,66/; ;/0 天津大学 精密仪器学院,天津 ;666U/ )
摘
要:首先介绍了当前在国内外十分流行的工程设计和系统仿真软件包 !"#$"% 的优缺点,然后
!"#$"% 是 !"#&’()*+ 公司于 ,-./ 年推出的 一套高性能的数值计算软件 0 它集数值分析、矩 阵运算、 信号处理和图形显示于一体, 构成了一个 方便、界面友好的用户环境 0 它还包括了 1(($%(2 3 工具箱 4 的各类问题的求解工具,可用来求解特 定学科的问题 0 具有可扩展性、易学易用性和高 效性 0 由于 !"#$"% 具有如此之多的特点,在欧美 高等院校, 自动控 !"#$"% 已成为应用于线性代数、 制理论、 数理统计、 数字信号处理、 时间序列分析、 动态系统仿真等高级课程的基本教学工具;在研 究单位、 工业部门, !"#$"% 也被广泛用于研究和解 决各种工程问题 0 然而 !"#$"% 自身所存在的某些 缺点限制了它进一步应用的范围 0 3 , 4 !"#$"% 是一种解释性语言, 因此它的实时 效率是相当差的 0 例如在一个电机控制系统项目 中,采用 !"#$"% 语言编写的仿真程序,在工业用 控制机 3 奔腾 555 4 上需要 /6 789, 而同样的算法, 用 : 语言实现,仅需 ;6 多秒 0 由此可见,!"#$"% 的 语言执行效率是比较低的 0 3 / 4 !"#$"% 程序不能脱离其环境运行, 因此它 不能被用于开发商用软件 0 3 ; 4 !"#$"% 程序可以被直接看到程序的源代 码, 因而不利于算法和数据的保密性 0 3 < 4 不能实现端口操作和实时控制 0 在工程应用中, 一般用 =:, =>, : ? ? >@8$AB) 等高级语言编写应用程序, 实现交互界面、 数据采 集和端口操作等,但这些高级语言在数值处理分 析和算法工具等方面,其效率却又远远低于 !"#C $"% 语言 0 在准确方便地绘制数据图形方面, !"#C