Visual Basic调用matlab程序的研究Word文件下载.docx
《Visual Basic调用matlab程序的研究Word文件下载.docx》由会员分享,可在线阅读,更多相关《Visual Basic调用matlab程序的研究Word文件下载.docx(45页珍藏版)》请在冰豆网上搜索。
第2章VisualBasic调用matlab程序的研究6
2.1VisualBasic调用matlab程序原理6
2.1.1VisualBasic调用matlab程序的几种具体实现方法6
2.1.2Matlab语言与ActiveX技术7
2.2创建ActiveX控件的步骤8
第3章VisualBasic借助ActiveX部件调用matlab的实现13
3.1VisualBasic借助ActiveX部件调用matlab程序简介13
3.2调用程序设计原理13
3.2.1调用图13
3.2.2ActiveX自动化图13
3.2.3、创建和获取ActiveX自动化对象的过程15
3.2.4MATLAB对象的一些属性和方法15
3.3VisualBasic调用matlab程序功能介绍16
3.3.1初始化界面介绍16
3.3.2初始化界面实现17
3.3.3调用程序界面介绍17
3.3.4用户应用界面的初步实现17
3.4毕业设计调用界面的实现21
3.5调用Matlabe程序的实现22
3.6调用程序的帮助23
结论23
致谢24
附录26
开题报告26
中期报告28
英文翻译28
1原文28
2翻译35
附件44
前言
MATLAB自1984年由美国MathWorks公司推向市场以来,已成为国际公认的最优秀的科技应用软件。
它具有强大的数值、符号计算,离线和在线计算,矩阵计算能力,计算结果和编程可视化,界面友好,语言自然,是功能强大的计算辅助解决具体工程问题的标准软件。
Microsoft公司推出的VisualBasic(简称VB)是目前被广泛使用的,开发应用程序的可视化开发工具。
由于它功能强大,易学易用,越来越多的人将它作为开发Windows应用程序的工具。
工业生产中经常遇到复杂的数据信息处理问题,需要大运算量的矩阵计算及对分析结果进行实时、直观的图形化显示。
Matlab是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件,将其强大的计算功能与VB在图形用户界面开发方面的优势结合起来,实现应用系统的无缝集成,对于有效缩短开发周期、优化系统性能是十分有意义的,那将大大地提高编程者的工作效率;
为此,Mathworks公司为MATLAB提供了应用程序接口,允许MATLAB和其它应用程序进行数据交换,为在其它程序设计语言调用MATLAB高效算法提供了可能。
第1章绪论
1.1综述
MATLAB自1984年由美国MathWorks公司推向市场以来,已成为国际公认的最优秀的科技应用软件。
它具有强大的数值、符号计算,离线和在线计算,矩阵计算能力,计算结果和编程可视化,界面友好,语言自然,是功能强大的计算辅助解决具体工程问题的标准软件。
Microsoft公司推出的VisualBasic(简称VB)是目前被广泛使用的,开发应用程序的可视化开发工具。
MATLAB也是支持ActiveX自动化技术的软件,能够被任何可作为ActiveX控件程序的MicrosoftPrograms所控制,利用这一特性,用户可以非常方便地在自已的程序中使用MATLAB,包括执行MATLAB命令,使用其功能丰富的工具箱(Toolbox),向MATLAB输入数据,获取结果(数据,图形)。
这样既能用VB编出漂亮的Windows程序,又能同时获得MATLAB在工程辅助设计,仿真等方面的功能。
本文主要介绍在VisualBasic6.0中如何调用出Matlab程序。
1.2Matlab被调用程序的发展状况
1借助ActiveX部件调用Matlab
2借助DDE技术调用Matlab
3通过M文件调用Matlab
4引入MatrixVB调用Matlab
1.3课题背景
1.3.1VisualBasic6.0背景
1VisualBasic6.0概念
VisualBasic6.0是微软公司推出的主流编程语言之一,是一种新型的计算机编程语言。
它与传统的程序设计语言相比,最突出的特点是可视化、事件驱动和交互式。
VisualBasic经过微软公司长期不断的完善、第三方资源的大量加入以及广大爱好者的大力支持,VisualBasic6.0已经成长为功能强大,使用人数
众多的主流编程软件。
它提供了向导自动生成代码,支持拖放技术、属性检查、实施与法检查等内置自动化技术,大大降低了编写代码的工作量,同时它还提供极丰富的控件,使得VisualBasic6.0成为最简捷、最有效开发windows应用程序工具。
2VisualBasic具体包含以下内容:
对象:
面向对象编程(OOP),虽然VisualBasic并不是完全的面向对象编程,但也利用了对象编程技术。
对象简单地说就是大家经常看到的各种窗口、按钮、文本框甚至打印机等。
属性:
如同电视有黑白、彩色之分一样,作为对象的Windows中的窗口也是有大有小,文本框的位置不可能完全一样,菜单要显示出不同的功能,这些都是由对象的属性决定的。
不同对象的属性可能不同。
属性一般决定了对象的位置、大小、显示等情况。
方法:
就是对象能够做的事,如打印机对象就有打印(Print)方法、窗口对象支持隐藏(Hide)方法、很多对象支持移动(Move)方法等。
事件:
就是对象对用户各种操作的反映情况。
如用户用鼠标按一下按钮,就会触发按钮的“按”(Click)事件。
控件:
控件就是VisualBasic提供的编程用的模块,与对象有直接的联系,如同积木的木块,使用这样的控件,就可以像拼图或堆积木一样“搭”、“拼”你的程序界面。
VisualBasic中使用控件,简化了Windows中的窗口、按钮等对象的编程设计。
每个控件都有各自的属性、事件及方法。
只需修改这些特征你就可以随心所欲地编程了。
最重要的是,你可以利用成千上万的各种扩充的控件来快速构造几乎能满足你任何要求的程序。
例如,如果你不满意Windows简陋的媒体播放器,你就可以使用VB的多媒体控件在1小时以内设计一个完全自己风格的能够播放CD、VCD的多媒体播放器,而功能完全与之相当。
3VisualBasic语言的特点
(1)VB继承了Basic简单易用的特点;
(2)VB适用于Windows环境下快速编程;
(3)VB采用可视化技术,操作直观;
(4)VB采用面向对象技术,没有复杂的程序流程;
(5)VB编程模块化、事件化,程序由许多小程序组成;
(6)可以使用大量的VisualBasic控件、模块简化编程;
(7)VB可以调用Windows中的API函数及DLL库;
(8)VB有很好的出错管理机制;
(9)VB与其他程序有良好的沟通性,如各种数据库;
1.3.2Matlab语言背景
1Matlab语言概述
Matlab是MathWorks公司开发的一种工程计算语言。
它是一个交互系统,在Matlab中的基本数据元素是一个不要求维数的复矩阵。
用Matlab可解决很多工程计算问题,特别是涉及到矩阵和矢量形式的问题。
Matlab是一个高度集成的语言环境,在它的界面下可以编写程序、运行程序并可进行跟踪调试。
对于广大的工程技术人员和科学研究人员来说,Matlab不失为一种很好的工具。
Matlab也有局限性,一般它不能脱离Matlab集成环境工作;
而且编写界面的功能比较弱。
2Matlab的主要特点
(1)其强大的计算功能.
(2)计算结果和编程可视化.
(3)极高的编程效率。
3Matlab存在的一些问题
(1)运行的速度慢。
运行速度是工程设计尤其是控制领域的命脉所在,由于Matlab的程序世界是运行的,所以其运行速度不可避免地要下降。
(2)无法脱离Matlab环境运行。
Matlab6.x以上的版本对计算机的要求较高,且自身程序所占的空间较大,这就是得些配置较低的机器运行有困难。
1.3.3ActiveX控件背景
1ActiveX控件概念
ActiveX是一个Microsoft的术语,它指的是一组包括控件,DLL和ActiveX文档的组件,它通常是以动态链接库的形式存在,因此必须在一个叫容器的独立执行软件中运行。
这样的容器包括Authorware、Delphi,VisualBasic,VisualC++,InternetExplorer和Access等等。
ActiveX控件数据输入和函数功能执行都必须通过容器,因此ActiveX控件和容器都必须支持一些特定的接口协议。
根据Microsoft相应的规格标准,ActiveX控件应具备如下的性能机制。
属性和方法:
ActiveX控件必须提供属性的名称、方法的名称及参数,通过这项机制容器可以存取和改变ActiveX控件的属性参数。
事件:
ActiveX控件由这项机制通知容器在ActiveX控件中发生的事件,比如属性参数的改变,用户按下鼠标左键等。
存储:
容器由这项机制通知ActiveX控件存储和提取有关信息数据等。
2认识VB的ActiveX控件
VB给我们带了9个内置ActiveX控件:
ImageList、ToolBar、StatusBar、TabStrip、Slider、ProgressBar、TreeView、ListView、CoolBar。
RichTextBox控件
RichTextBox控件是整个字处理的核心。
它提供了文本框的所有功能,能够将不同字体、字号和属性混在一起编辑,能够精确地控制文本边界。
在部件窗口选上MicrosoftRichTextBoxControl6.0就可把控件引入工具箱。
ImageList控件包含一组ImageList对象,要通过索引或键来引用,它作为放置其他图形控件的中央仓库。
在程序运行时,可通过Treeview1.imagelist=Imagelist1语句,将Treeview1控件与Imagelist1控件相关联,Treeview1控件就可以使用Imagelist1控件中的图片。
TooBar控件包含一组Button对象,用于生成与程序相关的工具条。
StatusBar控件状态栏就是通过这个控件制作的。
这三个控件包含在MicrosoftWindowsCommonControl6.0中,把它引入工具箱,并把这三个控件放入窗体。
1.4本文主要研究工作
MATLAB作为自动化服务器,在使用VB进行Windows编程中,充分发挥MATLAB在系统分析仿真等方面的优势。
第2章VisualBasic调用matlab程序的研究
2.1VisualBasic调用matlab程序原理
2.1.1VisualBasic调用matlab程序的几种具体实现方法
1借助ActiveX部件
Microsoft把所有以COM为基础的技术统称为ActiveX技术。
自动化是大多数ActiveX技术的基础,它可使解释性的宏语言(如VB)能够在不了解应用程序实现细节的情况下控制自动化对象。
Matlab实现了ActiveX自动化服务支持,在VB下通过ActiveX自动化接口可将Matlab作为VisualBasic语言的一个ActiveX部件调用。
2借助DDE技术
通过对Matlab的应用程序接口的分析,可以发现Matlab提供了客户/服务器功能。
利用其中的动态数据交换(DDE)服务功能和Activex自动化(OLE自动化)服务功能,可以实现在VB中对MATLAB函数的调用,DDE(DYNAMICDATAEXCHANGE)允许MicrosoftWindows应用程序通过交换数据实现彼此间的通信。
应用程序间彼此通信要先建立一个DDE会话,对会话进行初始化的应用程序称为客户端(Client),对Client端作出响应的应用程序称为服务器(Server)并通过MAXRRAYS(MATLAB中的基本数据类型)与MATLAB工作空间交换数据,从而增强VB的数值计算能力和数据的可视化能力。
如(图2.1)所示
图2.1DDE技术调用Matlab
3通过M文件
Matlab产生的M文件不能直接在VB中调用,可利用mcc将M文件直接编译成.EXE文件,然后在VB中声明下面三个API函数,最后使用Shell命令即可实现VB与Matlab的无缝集成。
(1)用mcc生成独立的外部应用程序。
可使用如下两种命令:
mcc-pfile.m或mcc-mfile.m
(2)在VB中声明调用的三个API函数:
●DeclareFunctionWaitForSingleObjectLib“kernel32”(ByValhHandleAsLong,ByValdwMillisecondsAsLong)AsLong
●DeclareFunctionCloseHandleLib“kernel32”(ByValhObjectAsLong)As
Long
●DeclareFunctionOpenProcessLib“kernel32”(ByValdwDesiredAccessAsLong,ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)AsLong
(3)示例代码:
DimlTaskAsLong,lretAsLong,lHandleAsLong
’执行file.exe文件
lTask=Shell(“file.exe”,vbNormalFocus)
lHandle=OpenProcess(SYNCHRONIZE,False,lTask)
’等待进程执行完毕
lret=WaitForSingleObject(lHandle,INFINITE)
lret=CloseHandle(lHandle)
’file.exe文件执行完毕后,继续执行应用程序
……
通过以上编码,应用程序可以在执行过程中调用.EXE完成特定的计算或图形功能后,再继续其执行过程,从而实现与Matlab的调用。
4引入MatrixVB
MatrixVB是MathWorks针对VB提供的一个Matlab库,它提供了600多个函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,为VB提供了强大的功能扩展。
在VB中使用该数学工具包可避免重复性劳动,从而减少开发人员实现算法和界面设计的困难。
MatrixVB是一个独立的产品,其使用十分方便。
MatrixVB安装完成后,只需在VB工程中引用Mmatrix即可。
2.1.2Matlab语言与ActiveX技术
VisualbasicActivex部件是Microsoft公司提供的一种用于模块继承的新协议,它是工具箱的扩充部分。
在程序中加入Activex部件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。
Activex部件保留了一些普通vb控件的属性、事件和方法。
Activex部件特有的方法和属性大大增强了程序设计者的能力和灵活性。
虽然Matlab是一个安全独立的编程和数据运算的集成环境,使他可以方便的做很多工作。
但是,很多时候仅仅靠matlab环境还不能很好的完成任务,比如说:
(1)Matlab程序中出现循环时,Matlab运行起来非常吃力,速度很慢。
(2)以前去多用其他语言编写的算法程序如果要移植到Matlab环境中运行就需要编写为M文件,还需要浪费许多人力物力。
别的编程环境需要使用Matlab的某些优秀的功能时找不到合适的办法。
因此,Matlab与外部的数据和程序交互是很有意义的。
MATLAB程序接口的出现,正是为了处理这些问题,用过它可以完成于其他编程环境的交互,各取所长,充分发挥。
MATLAB接口包括:
(1)在MATLAB环境中调用别的语言编写的程序和算法,它通过MEX文件来实现。
(2)MATLAB于别的编程环境的数据交互,它通过MAT文件来实现。
(3)别的编程环境使用MATLAB的计算功能,它通过MATLAB计算引擎来实现。
MATLAB支持的ACTIVEX有两方面含义:
(1)在其他程序下运行MATLAB的ACTIVEX部件。
(2)在Matlab下运行其它Activex 部件。
从某种意义上来说,ActiveX技术的应用有些像DDE链接,但比DDE链接更强大,所以ActiveX出现后,链接DDE的方法就不再那么吸引人了。
与ActiveX的链接将成为主要的链接方式。
ActiveX实际上是在调用一种部件,而无需要求该部件对应的程序正在运行,这会使得其功能更加强大。
2.2创建ActiveX控件的步骤
a.使用VisualBasic编程语言编写过应用程序,一定要非常熟悉诸如TextBox、Label和Data等控件。
要利用这些控件,可以将它们绘制在窗体中,通过属性,方法和事件控制它们的行为。
当用户创建自己的ActiveX控件时,除了确定属性、方法和事件以外,用户是在创建一个相似的对象。
当创建了自己的ActiveX控件以后,就可以在其他VisualBasic工程中使用它,就像使用TextBox控件一样。
可以在能使用ActiveX控件的任何应用程序或开发工具(包括其他VisualBasic工程、Authorware或者MicrosoftInternetExplorer)中使用自己的控件。
在VisualBasic中创建一个ActiveX控件不同于创建一个StandardEXE
应用程序。
因此当创建一个新控件时,一般应遵循的步骤是:
(1)确定控件将要提供的功能。
因为ActiveX控件类似于一个独立的对象,
所以需要明确这个对象的目的,希望它在屏幕上有什么样的外观?
使用此
控件时,需要什么属性、方法以及事件用于应用程序中?
(2)设计控件的外观。
(3)设计控件的接口,即属性、事件和方法。
(4)创建由控件工程和测试工程组成的工程组。
(5)通过把控件和或代码添加到UserControl对象中来实现控件的外观。
(6)实现控件的接口和功能。
(7)编译控件部件(.ocx文件)。
b.具体实现方法
(1)确定DataListView控件的功能
标准的ListView控件在显示数据库记录时还存在一些不足,如必须编写大量的代码等,DataListView通过在ListView的基础上添加部分功能而弥补了ListView的不足,因此它除了本身固有的属性、方法和事件外,添加了如下成员:
1)DataServerName属性--确定所操作的数据库服务器。
2)DataBaseName属性--确定所操作的数据库。
3)AdministratorName属性--确定操作数据库的管理员名称。
4)PasswordName属性--确定操作数据库的管理员口令。
5)ShowDataBase方法--显示Select命令所执行的数据库操作结果。
6)ErrorDataBase事件--当遇到错误的数据库操作时引发该事件。
(2)设计控件的外观
DataListView由于仅包含一个ListView控件,所以其外观没有太多需要考虑的问题。
如果要创建的控件是多个控件构成,或新控件不包括任何现存控件即完全从头开始创建一个全新的控件的话,则外观问题是一个很重要的问题。
(3)设计控件的接口,即属性、事件和方法
对ListView控件所作的改进是为了让ListView控件支持数据库的内容显示,以便在所有能支持ActiveX控件的应用程序中使用。
通过添加用户自己的属性DataServername、DataBaseName、AdministratorName、PasseordName和方法ShowDataBase等可以实现这项功能。
DataListView的其他属性、事件和方法都和标准ListView一样。
(4)创建由控件工程和测试工程组成的工程组
1)启动一个新的ActiveX控件工程。
2)按下CTRL+T组合键或者选择(工程)|(部件)菜单选项,显示(部件)对话框,在(控件)选择框中选择MicrosoftWindowsCommonControls6.0。
3)选择(工程)|(引用)菜单选项,显示(引用)对话框,在(可用的引用)选择框中选择MicrosoftActiveXDataObjects2.0Library。
4)在UserControl窗口中添加一个ListView控件,ListView控件的左上角位置为00。
5)设置ActiveX工程和UserControl控件属性值,如(表2.2)所示。
条目
设置
工程类型
ActiveX控件
工程名称
DataLV
工程描述
通过ADO,使得ListView控件能够直接操作数据库