求论文!!!关于MATLAB的数值运算问题的研究
我有一篇写着玩的,前几天送给一个小朋友发表了,但继续做下去应该会有一些有意思的结果,如果你有兴趣可以发站内信件给我。
用zscore,标准化的目的是:使得平均值为0,标准差为1,这样可以使不同量纲的数据放在一个矩阵.
>> A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> [Z,MU,SIGMA] = zscore(A)
Z =
1.3770 -1.2509 -1.0585 0.8262
-0.6426 0.4811 0.2887 -0.0918
0.0918 -0.2887 -0.4811 0.6426
-0.8262 1.0585 1.2509 -1.3770
MU =
8.5000 8.5000 8.5000 8.5000
SIGMA =
5.4467 5.1962 5.1962 5.4467
>> mean(Z)
ans =
1.0e-016 *
-0.2776 0 0 0.5551
>> std(Z)
ans =
1.0000 1.0000 1.0000 1.0000
摘 要 文章探讨了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.3 MATLAB与Visual C++的数据传输
MATLAB与Visual C++的数据传输需要三个步骤,第一完成Visual C++读取ACCESS数据库的大量数据;第二把Visual C++读取到的数据传输到MATLAB中,并在利用MATLAB中自编的函数进行处理;第三把处理结果传输到Visual C++中。下面通过例子说明MATLAB与Visual C++的数据传输。
double dataplot[2000];
mxArray *T=NULL;
int x=0;
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("场强");
// 读出库中字段数据
dataplot[x]=var;
if(x== Jshuqi -1) //判断是否数据读完,数据传输到MATLAB
{
T = mxCreateDoubleMatrix(1, Jshuqi, mxREAL); /*创建一个矩阵*/
mxSetName(T, "T");
/*设置矩阵的名字为“T”*/
memcpy((char *)mxGetPr(T), (char *)dataplot, Jshuqi* sizeof(double)); //向矩阵“T”赋值
engPutArray(ep, T);
/*向MATLAB引擎发送一个MATLAB矩阵*/
mxArray *result=engGetArray(ep,"T"); //VC++读取Matlab的矩阵T中的数据
double *p=mxGetPr(result);
mxDestroyArray(T); /*从内存中撤销矩阵“T”*/
}
x++;
m_pRecordset->MoveNext();
}
3 数据处理系统功能
数据处理系统主要对测试数据进行处理,并提供与测试数据相关的处理结果,数据的处理方法根据测试方法和科学理论计算方法来确定,本系统的主要功能在于能够方便及时地存储原始测试数据,并能够方便数据处理方法的研究,为获得可靠科学的测试数据处理结果提供了极为方便的途径。其功能主要包括:存储测试数据到MATLAB环境中、合并我们所需一起处理的多次测试数据、采用数据处理方法统计测试数据得到的结果。
3.1 存储测试数据
在数据处理系统中,选择所要处理的测试代号或者在测试代号编辑框中输入所需的测试代号,左击 “保存数据” 按钮,就可以把对应测试代号的数据读入MATLAB环境中。
3.2 合并测试数据
在数据处理系统中,处理的测试数据往往对几次测试的数据需要一起处理,系统可以把几次测试代号所对应数据按一定的顺序进行合并。
系统的操作为:对2个和多个测试数据进行合并,只需选中“2个测试代号”或“多个测试代号”,在保存名中输入保存名,然后进行读取测试数据操作,这样会在“数据表名”中显示读取数据的测试代号名和在“存储数据表名”中显示刚才在保存名中输入的名字;到读取完所有的所需数据后只需左击“合并数据”按钮,就可以完成合并测试数据的操作。
3.3 采用数据处理方法统计测试数据
统计测试数据是实现数据处理方法,虽不同测试的数据处理方法不同,但只需少量的工作就可以完成所对应的数据处理,而且在处理过程中能够根据数据结果来即时的修改数据处理方法。系统只需我们实现在MATLAB环境中测试数据处理方法的程序,这样为研究人员提供了极大的方便。
系统只需把数据处理方法的程序放入系统的处理函数里,就可以实现对测试数据的统计处理,本系统在数据存储好后只需按“作图求值”按钮,就可以获得我们所需的测试数据结果和统计图。
4 结论
本系统很好地结合了Visual C++和MATLAB的高性能的数值计算优点,此系统在某次测试中处理了上百万个数据量的数据库,为研究科学合理的数据处理方法提供了方便和节约了时间,并在最后提供可靠科学的测试结果,提高了测试数据处理的工作效率和即时性,具有较高的社会效益。
参考文献
[1]刘志俭等. MATLAB应用程序接口用户指南[M]. 北京:科学出版社,2000.
[2]陶红,袁金荣. Matlab与C/Visual C++混合编程的实现[J].计算机工程与应用,2000(10)
[3]MichaeI J. Young著,邱仲潘等译. Visual C++6从入门到精通[M]. 北京:中国电子工业出版社,1999.
相关资料:
http://www.lwlm.com/html/2008-06/84302.htm
仅供参考,请自借鉴
希望对您有帮助
找一本 matlab 数值计算的书!看看!
论文MA是什么意思
MA是标准的学术论文。_A是学术型硕士,注重学术研究;MTI是专业型硕士,注重实践能力。所以MA的课程更多偏向培养科研能力,MTI的课程基本上都是实践课;两者毕业论文要求都不一样,MA是标准的学术论文,MTI的论文形式可以是实践报告、调研报告等,要求低很多。
Ma前气候变冷引发的北大西洋深层水的形成
最近许多关于NADW开始的年代,根据中纬至低纬的碳同位素数据[10~13],估算在34~12.5Ma之间(这篇论文中所有的年代都由Cande和Kent年代表给出[9]。通常假设NADW开始的引发因素为格陵兰—苏格兰海脊的沉降[10~15]。 为了确定NADW开始的时间和引发因素,笔者研究了NADW的上游地区几个深海钻孔点位,即在挪威海—格陵...
科技创新大比赛论文一定要写有关科学的吗?
当然不一定啊!有这么几个学科分类 1.数学(MA)——指形式逻辑或各种数字及代数计算的开发,以及这些原理的应用,包 括微积分、几何、抽象代数、数论、统计学、复数分析、概率论等。2.计算机科学(CS)——指计算机硬件和软件工程设计与开发,包括互联网技术及通信、 计算机制图技术(包括人性化界面)...
麻锦彪代表性论文和专著
麻锦彪博士在科研领域发表了多篇具有重要影响的论文和专著,以下是其中的几项代表性成果:1. Ma, J.B., Ye, K., & Patel, D.J. (2004). "Structural basis for overhang-specific small interfering RNA recognition by the PAZ domain". Nature. 429:318-322. 这篇文章揭示了小干扰RNA识别...
ma是什么学位
MA是文学硕士学位。文学硕士学位是标志着在某一特定学术领域内,尤其是在文学、语言、文化等领域内,拥有高水平研究能力和专业知识的一个学位。以下是关于MA的详细解释:文学硕士学位是硕士学位的一种,专注于人文科学领域。该学位的课程设置通常涵盖了文学理论、文化研究、语言学、文本分析等方面。获得这一...
毕业论文的参考文献如何标注?
在毕业论文中,参考文献是一个很重要的部分,是对你论文研究资料提供的来源证明,同时也体现了论文严谨性和学术水平。关于参考文献的标注,一般遵循以下几个规则:1. 引用文献的格式一定要统一,通常可以采用学术界公认的格式,如APA、MLA、Chicago等。2. 对于同一作者的多篇文献,在引用时需按时间先后...
ma是什么的缩写
MA是Master of Arts的缩写。Master of Arts,简称MA,是一种学术性硕士学位,通常在人文科学领域授予。该学位表示学生在特定学科领域,如文学、历史、艺术、语言学等,完成了高级课程学习并获得了专业知识和研究能力。在许多国家和地区,拥有MA学位的人被视为在其专业领域内的专家或专业人士。这个学位通常...
英国的硕士学位MA与MSC有什么区别
英国的硕士学位MA与MSC的区别 一、学费不同 在MA与MSC是由同一所学校授予给就读研究生的情况下,MSC的学费会比MA的学费高,大约高一千多英镑。二、考核方式不同 MA的考核方式主要就是写论文,较为单一,而MSC的考核方式则比较多样,不仅要写多篇要求很多的论文,还要参加阶段性的评估测试、结课考试...
ma与ms区别是什么?
1、定义不一样:MA是文学硕士学位,MS为理学类硕士学位。2、包含课程不一样:MA文学硕士学位主要包含哲学思想、社会经济学、法律学、社会心理学、文学、历史学、理学类、工科、农学专业、医药学、军事学、企业管理学的类别。而MS理学类硕士学位主要包含数学课、物理、有机化学、生物技术专业、天文学、...
本科论文有格式要求ma
有的。一般每个学校的要求会有一些不同,具体的学校一般会发格式要求,你可以找找看。
平录六味: DataType: 1 题名: 数学建模教学模式的研究与实践 作者: 乐励华,戴立辉,刘龙章 单位: 东华理工学院,东华理工学院,东华理工学院 江西抚州344000 ,江西抚州344000 ,江西抚州344000 年: 2002 期: 06 页码: 9-12 关键词: 数学建...
岳阳县13586996783: 数值计算 matlab 论文前言怎么写 - ?
平录六味: 引言由于计算机的迅速发展,数值计算方法的应用已经普遍深入到各个科学领域,并已成为各门自然科学和工程技术领域的一种重要手段,成为与实验和理论并列的一个不可缺少的环节.目前流行用BASIC、FORTRAN和C语言编制计算程序,即需要对有关算法有深刻的了解,又需熟练掌握所用语
岳阳县13586996783: 一道需要matlab来实现的小问题,有关数值计算 - ?
平录六味: 作业?! ----------------------- h=0.1; %步长,可指定 n=1/h; %步数f=@(t,u)u; %f(t,u)=u; x=zeros(n+1,2); %用于存储结果,第一列存储t,第二列存储ux(1,1)=0;x(1,2)=1 %初值 tk=0;uk=1; for k=1:nk1=h*f(tk,uk);k2=h*f(tk+0.5*h,uk+0.5*k1);k3=h*f...
岳阳县13586996783: 我论文需要用MATLAB求解微分方程,Dx= - 0.85*x+0.25*y+0.35*z - 0.8*x^2*y,Dy=0.8*x^2*y - 1.2*y,Dz=0.9*x+0.8*y - 0.3*z用MATLAB画出该微分方程的图像 - ?
平录六味:[答案] 用dsolve求不出解析解,用数值解法吧,最好能提供初始条件,这里假设t=0时,x0=1,y0=2,z0=3.function hh[t,x]=ode23t(@fun,0:1,[1 2 3])plot(t,x)function yhat=fun(t,x)dxdt=-0.85*x(1)+0.25*x...
岳阳县13586996783: 求基于MATLAB的数字信号分析论文! - ?
平录六味: 接着写频谱分析,谐波含量,滤波器参数选取,各种滤波器结果比较等等
岳阳县13586996783: matlab在数值分析中的应用有哪些 - ?
平录六味: MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科...
岳阳县13586996783: matlab求解行列式论文 2000字左右?
平录六味: 在Matlab中,用于求行列式值的函数为det(),det为英语中行列式determinant的前三个字母. 例: >> A = [1 6 0; 7 2 7; 8 3 9] A = 1 6 0 7 2 7 8 3 9 >> det(A) ans = -45 假如说你的矩阵特别大,那么它的行列式子,一般是一个很大的值 在数学上没有...
岳阳县13586996783: 论文急求!Matlab求对比矩阵的最大特征值! - ?
平录六味: ok there seems to be some problems..
岳阳县13586996783: 基于matlab语言的求函数极值的方法? 论文用?
平录六味: 求x-a(a可以是无穷大inf)时f(x)的极限:syms a xlimit(f(x),x,a)
岳阳县13586996783: 求matlab数字图像几何变换方面的论文知道给我回复谢谢 - ?
平录六味: 数字图像,是以二维数字组形式表示的图像,其数字单元为像元,数字图像的恰当应用通常需要数字图像与看到的现象之间关系的知识,也就是几何和光度学或者传感器校准,数字图像处理领域就是研究它们的变换算法.数字图像,又称数码图像...