大学生论文MATLAB在数据处理中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB在数据处理中的应用(赵希希1200824318电混1班)摘要:MATLAB是一种科学计算软件,在工程计算、理论分析、试验仿真等领域内发挥着巨大的作用。本文对MATLAB软件进行了简单的介绍,指出其特点、基本计算方法。并通过几个实例,说明该软件在数据处理中的强大应用。关键词:MATLAB;数据处理;数据统计;数据插值;数据拟合MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便且界面友好的用户环境。MATLAB强大的计算能力和无与伦比兼容性,使得它能在数学科目以外的专业继续发挥它的作用,如数据处理、非线性电路等方面。数值计算在科学研究与工程应用中有非常广泛的应用。许多数值计算问题,用其他程序设计语言编程求解非常麻烦,并且需要具备专门的数学知识及一定得程序设计技能,而且MATLAB编程,往往只要少数几个语句即可完成求解任务,具有编程效率高、使用方便等特点。MATLAB这种强大的数值计算能力,使其成为在科学计算方面的首选解题工具。在科学实验与工程测量中,经常会遇到大量的数据处理问题,而这些大量的数据处理往往会令人十分头疼,容易因为粗心导致出错。我们把这些复杂、大量的数据交给MATLAB去处理就方便多了。数据处理包括数据统计、数据插值、曲线拟合。一、数据统计数据统计问题一般包括求矩阵最大、最小元素,求矩阵平均值和中值,矩阵元素求和、求积,矩阵元素累加和与累乘积,求标准方差、相关系数、元素排序等。它们都有相应的调用格式:①求矩阵最大、最小元素的调用格式max(A):返回一个行向量,Y向量的第i个元素是A矩阵的第i列上的最大元素。[Y,U]=max(A):返回两个行向量,Y向量记录A的每列的最大元素,U向量记录每列最大元素的行号。max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同。Dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大元素。U=max(A,B):A、B是两个同型的向量或矩阵。结果U是与A、B同型的向量或矩阵,U的每个元素等于A、B对应元素的较大者。U=max(A,n):n是一个标量。结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和max完全相同。min函数的用法和max完全相同。②求矩阵平均值和中值的调用格式求矩阵和向量元素的平均值的函数是mean,求中值的函数是median。设X是一个向量,A是一个矩阵,两个函数的用法如下:mean(X):返回向量X的算术平均值。median(X):返回向量X的中值。mean(A):返回一个行向量,其第i个元素是A的第i列的算数平均值。medianA):返回一个行向量,其第i个元素是A的第i列的中值。mean(A,dim):当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。medianA,dim):当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。③矩阵元素求和、求积的调用格式矩阵和向量求和与求积的基本函数是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为:sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行元素的各元素和。prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行元素的各元素乘积。④求矩阵元素累加和与累乘积的调用格式在MATLAB中,使用cumsum和cumprod函数能方便地求的向量和矩阵的累加和与累乘积向量,函数的调用格式为:cumsum(X):返回向量X累加和向量。cumprod(X):返回向量X累乘积向量。cumsum(A);返回一个矩阵,其第i列是A的第i列的累加和向量。cumprod(A);返回一个矩阵,其第i列是A的第i列的累乘积向量。cumsum(A,dim);当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量cumprod(A,dim);当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累乘积向量。⑤求标准方差的调用格式对于具有N个元素的数据序列x1,x2,x3,…,xN,标准方差的计算公式如下:N21ii11Sx-xN1或N22ii11Sx-xN其中N1i11xxN对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数一般点用格式为:std(A,flag,dim)其中dim取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag取0或1,当flag=0时,按S1所列公式计算标准方差;当flag=1时,按S2所列公式计算标准方差。默认flag=0,dim=1。⑥相关系数的调用格式对于两组数据数列xi、yi(i=1,2,…,n),可以由下式计算出两组数据的相关系数:ii22iix-xy-yrx-xy-ycorrcoef函数的调用格式为:corrcoef(X):返回从矩阵X形成的一个相关系数矩阵此相关系数矩阵的大小与矩阵X一样。它把矩阵X的每列作为一个变量,然后求它们的相关系数。corrcoef(X,Y):在这里,X、Y是向量,它们的作用与corrcoef([X,Y])中一样。⑦元素排序的调用格式MATLAB中对向量X排序函数是sort(X),函数返回一个对X中的元素按升序排序的新向量。sort函数也可以对矩阵A的各列(或行)重新排序,其调用格式为;[Y,I]=sort(A,dim)其中dim指明对A的列还是行进行排序,若dim=1,则按列排;若dim=2,则按行排。Y是排序后的矩阵,而I记录Y中的元素在A中位置。这里我们举几个例子说明一下:例1求矩阵A的每行及每列的最大元素,并求整个矩阵的最小元素。124558256045A56251782013命令如下:A=[12,45,58;25,60,-45;56,25,178;2,0,-13];max(A,[],2)%求每行最大元素ans=58601782max(A)%求每列最大元素ans=5660178min(min(A))%求整个矩阵的最小元素。也可用命令:min(A(:))ans=-45例2求向量x的平均和中值。x102468012命令如下:x=[10,24,6,-8,0,-12];%偶数个元素mean(x)%求此向量的平均值x=10246-80-12ans=3.3333median(x)%求此向量的中值ans=3例3对下列矩阵做各种排序。0115A115716920命令如下:A=[0,-11,5;1,15,7;16,9,-20];sort(A)%对A的每列按升序排序ans=0-11-2019516157-sort(-A,2)%对A的每行按降序排列ans=50-111571169-20[X,I]=sort(A)%对A按列排序,并将每个元素所在行号送矩阵IX=0-11-2019516157I=113231322二、数据插值和数据拟合插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。在MATLAB中都有特定的函数来完成这些功能。这两种方法的确别在于:当测量值是准确的,没有误差时,一般用插值;当测量值与真实值有误差时,一般用数据拟合。下面对插值和拟合这两种数据处理的方法进行一下比较。插值:对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method),其中method包括nearst,linear,spline,cubic。对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。拟合:对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。对于二维曲面的拟合,有很多方法可以实现,这里运用SplineToolbox里面的函数功能。举例说明二维曲面的插值和拟合。例4原始数据x=[1:1:15];y=[1:1:5];z=[0.20.240.250.260.250.250.250.260.260.290.250.29;0.270.310.30.30.260.280.290.260.260.260.260.29;0.410.410.370.370.380.350.340.350.350.340.350.35;0.410.420.420.410.40.390.390.380.360.360.360.36;0.30.360.40.430.450.450.510.420.40.370.370.37];z是一个5乘12的矩阵。直接用原始数据画图如下:surf(x,y,z)title(’OriginaldataPlot’);xlabel(’X'),ylabel(’Y'),zlabel(’Z'),colormap,colorbar;axis([015060.150.55]先考虑插值,需要用到的函数interp2。x1=1:0.2:12;y1=1:0.2:5;[x2,y2]=meshgrid(x1,y1);t11=interp2(x,y,z,x2,y2,’cubic’);surf(x1,y1,t11)title(’AfterFitdataPlot’);xlabel(’X'),ylabel(’Y'),zlabel(’Z'),colormap,colorbar;axis([015060.20.55])然后考虑拟合:ky=3;knotsy=augknt([0:2.5:13],ky);sp=spap2(knotsy,ky,y,z);yy=0:.5:12;vals=fnval(sp,yy);coefsy=fnbrk(sp,’c');kx=5;knotsx=augknt([1:4:5],kx);sp2=spap2(knotsx,kx,x,coefsy.’);coefs=fnbrk(sp2,’c').’;xv=1:.25:5;yv=1:.5:12;valuesspcol(knotsx,kx,xv)*coefs*spcol(knotsy,ky,yv).’;surf(yv,xv,values)title(’AfterPolynaldataPlot’);xlabel(’X'),ylabel(’Y'),zlabel(’Z');colormap,colorbar;axis([015060.20.55])(注:图上面的小圆点是原始数据点,使用plot3画出,需要把不等边矩阵转换成等边矩阵然后再画图。)效果如以上三图所示,如果测量值比较精确,我们选择第二种方法插值法来画图,如果觉得测量值不是很精确,需要用拟合的方法,即第三种方法。总结与心得本文通过论述MATLAB在数据处理中的应用,充分体现了采用MATLAB对测量数据进行处理是简便、快捷和直观的。工程与科研中大量的统计问题运用MATLAB解决起来即高效又准确;多项式插值则在信号处理与图像处理上应用较为广泛;根据最小二乘原理拟合出的图形可供试验报告中采用或手工计算时查找,得出的多项式可供理论分析或产品的CAD中使用,而该方法同样适合于其它行业中图表曲线的处理,而且

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功