基于Matlab和VC联合编程的数据处理系统(1)
2015-02-10 01:40
导读:计算机应用论文论文,基于Matlab和VC联合编程的数据处理系统(1)在线阅读,教你怎么写,格式什么样,科教论文网提供各种参考范例:
摘 要 文章探讨了Visual C 6.0数据库技术和 MATLAB 6.5 强大的数值
摘 要 文章探讨了Visual C 6.0数据库技术和 MATLAB 6.5 强大的数值计算和图形显示功能。利用Matlab 和VC编制软件对数据进行处理,提高了数据处理的效率。 关键词 Matlab;数据处理系统;数据库1 引言 Visual C 是目前综合性最高、最强大的软件开发工具之一。Matlab是一种高性能的数值计算和可视化软件,在数值分析、信号处理、系统辨识、特殊函数和图形等方面具有广泛的应用。由于测试结果有上百万个数据量,且数据存储在数据库中,为了便于研究处理数据的方法,获得可靠的测试结果,本文探讨利用Microsoft Visual C 6.0数据库技术 和 MATLAB 6.5 强大的数值计算和图形显示并联合编制软件对数据进行处理。我们把 Matlab与Visual C 结合起来,简化复杂的数据处理方法研究,体验数据处理的工作效率和即时性。此系统在某次数据处理系统中得到广泛的应用。2 数据处理系统的关键技术 数据处理系统是利用Microsoft Visual C 6.0数据库技术 和 MATLAB 6.5 强大的数值计算和图形显示并联合处理测量数据的系统,数据处理系统涉及到Microsoft Visual C 6.0数据库技术和Microsoft Visual C 6.0与MATLAB的接口技术,为了能够使系统具有可移植性和即时性,系统使用的数据库技术是ADO数据库访问技术,Microsoft Visual C 6.0与MATLAB的接口技术是引擎技术。2.1 ADO数据库访问技术 ADO(ActiveX Data Object)是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。这要比ODBC API、DAO、RDO都要简单易用、灵活。 ADO数据库开发的基本流程如下: (1)初始化COM库,引入ADO库定义文件。 (2)用Connection对象连接数据库。 (3)利用建立好的连接,通过三个智能指针执行查询、处理结果记录集和SQL命令,使用完毕后关闭连接释放对象。2.1.1 初始化COM库 在MFC中采用一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM的操作,语句如下所示:AfxOleInit()。2.1.2 引入ADO库定义文件 用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它即可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:\program files\common files\system\ado\ msado15.dll" \ no_namespace \rename ("EOF", "adoEOF") 2.1.3 三个智能指针 数据处理系统使用前面用#import语句引用类型库时,生成的包装类.tlh中声明的智能指针中有这三个_ConnectionPtr、_RecordsetPtr和_CommandPtr指针,数据处理系统通过这三个智能指针使用ADO的连接数据库、SQL命令、记录集的遍历、更新操作。2.2 MATLAB与Visual C 的接口技术 MATLAB系统提供一个非常重要的组件—MATLAB应用程序接口,它可以向MSATLAB环境传送数据也可从MATLAB环境接收数据;Visual C 可以调用MATLAB编写的程序,在这里数据处理系统采用MATLAB引擎库,MATLAB引擎库包含了若干个控制MATLAB引擎的函数,如表1所示。表1 MATLAB引擎的函数表函数名函数功能engOpen启动MATLAB引擎engClose关闭MATLAB引擎engGetArray从MATLAB引擎中获取一个MATLAB矩阵engPutArray向MATLAB引擎发送一个MATLAB矩阵engEvalString执行于一个MATLAB命令或自编的MATLAB函数engOutputBuffer创建一个存储MATLAB文本输出的缓冲区
数据处理系统主要应用的引擎函数是engEvalString、engOpen、engClose等函数。下面通过简单的例子说明: #include "stdafx.h" #include "engine.h" int MatlabDraw() { Engine *ep; if (!(ep = engOpen(NULL))) { MessageBox ((HWND)NULL,"Can't start MATLAB engine","Matlab Draw",MB_OK); return 0; } /*启动MATLAB引擎*/ engEvalString(ep, "x=0:0.01:2*pi;y=sin(x);plot(x,y);"); /*执行MATLAB命令:绘图*/ engClose(ep); /*关闭MATLAB引擎*/ return 1; }共2页: 1 [2] 下一页 论文出处(作者):