MATLAB论文 1245236杨霞Word文件下载.docx
《MATLAB论文 1245236杨霞Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB论文 1245236杨霞Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
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列的算数平均值。
Median(A):
返回一个行向量,其第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为2时,返回一个矩阵,其第i行是A的第i行的累乘积向量。
⑤求标准方差的调用格式
对于具有N个元素的数据序列x1,x2,x3,…,xN,标准方差的计算公式如下:
(1)
或
(2)
其中
(3)
对于向量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),可以由下式计算出两组数据的相关系数:
(4)
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的每行及每列的最大元素,并求整个矩阵的最小元素。
命令如下:
A=[12,45,58;
25,60,-45;
56,25,178;
2,0,-13];
max(A,[],2)%求每行最大元素
ans=
58
60
178
2
max(A)%求每列最大元素
5660178
min(min(A)) %求整个矩阵的最小元素。
也可用命令:
-45
问题2求向量x的平均和中值。
命令如下:
x=[10,24,6,-8,0,-12];
%偶数个元素
mean(x)%求此向量的平均值
x=
10246-80-12
3.3333
median(x)%求此向量的中值
3
问题3对下列矩阵做各种排序。
A=[0,-11,5;
1,15,7;
16,9,-20];
sort(A)%对A的每列按升序排序
0-11-20
195
16157
sort(-A,2)%对A的每行按降序排列
ans=
50-11
1571
169-20
[X,I]=sort(A)%对A按列排序,并将每个元素所在行号送矩阵I
X=
I=
113
231
322
三、数据插值和数据拟合
函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。
而面对一个实际问题,究竟用插值还是拟合,有时容易确定,有时则并不明显。
在数学建模过程中,常常需要确定一个变量依存于另一个或更多的变量的关系,即函数。
但实际上确定函数的形式(线性形式、乘法形式、幂指形式或其它形式)时往往没有先验的依据。
只能在收集的实际数据的基础上对若干合乎理论的形式进行试验,从中选择一个最能拟合有关数据,即最有可能反映实际问题的函数形式,这就是数据拟合问题。
插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。
在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:
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的矩阵。
clc;
clear;
clf;
%原始数据的定义
12];
%z是一个5乘12的矩阵。
%直接用原始数据画图
surf(x,y,z);
%surf三维表面图
title('
OriginaldataPlot'
);
%图形标题
xlabel('
X'
),ylabel('
Y'
),zlabel('
Z'
),%对X,Y,Z轴范围的控制
axis([015060.20.55]);
%设定坐标系
运行结果如图
(1)所示:
图
(1)
先考虑插值,需要用到的函数interp2。
%先考虑插值,需要用到的函数interp2
x1=1:
0.2:
12;
y1=1:
5;
[x2,y2]=meshgrid(x1,y1);
t11=interp2(x,y,z,x2,y2,'
cubic'
surf(x1,y1,t11);
AfterFitdataPlot'
),
%对X,Y,Z轴范围的控制
%设定坐标系
运行结果如图
(2):
图
(2)
然后考虑拟合:
x=rand(100,1)*16-8;
y=rand(100,1)*16-8;
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
xlin=linspace(min(x),max(x),33);
ylin=linspace(min(y),max(y),33);
[X,Y]=meshgrid(xlin,ylin);
Z=griddata(x,y,z,X,Y,'
mesh(X,Y,Z)%interpolated
axistight;
holdon
plot3(x,y,z,'
.'
'
MarkerSize'
15)%nonuniform
运行结果如图(3)所示:
图(3)
(注:
图上面的小圆点是原始数据点,使用plot3画出,需要把不等边矩阵转换成等边矩阵然后再画图。
)
效果如以上三图所示,如果测量值比较精确,我们选择第二种方法插值法来画图,如果觉得测量值不是很精确,需要用拟合的方法,即第三种方法。
四、结论
从以上利用MATLAB语言在数据处理中的应用不难得出:
MATLAB在数据处理中对矩阵的最大、最小元素,求矩阵平均值和中值,矩阵元素求和、求积,矩阵元素累加和与累乘积,求标准方差、相关系数、元素排序等在数据处理中方便的解决。
MATLAB在中都有特定的函数来完成二维曲面的插值和拟合
五、课程体会
本文通过论述MATLAB在数据处理中的应用,充分体现了采用MATLAB对测量数据进行处理是简便、快捷和直观的。
工程与科研中大量的统计问题运用MATLAB解决起来即高效又准确;
多项式插值则在信号处理与图像处理上应用较为广泛;
根据最小二乘原理拟合出的图形可供试验报告中采用或手工计算时查找,得出的多项式可供理论分析或产品的CAD中使用,而该方法同样适合于其它行业中图表曲线的处理,而且能满足工程的精度要求。
在历时两周的课程论文编写过程中,我不仅掌握了用MATLAB解决数据处理问题的方法,也更加深了对《MATLAB语言》这门课的理解。
这次的课程论文不但是对这门课一学期来的学习成果的一次检验,也是对学到的知识的一次非常好的实践,从中我认识到将所学的各门课程融会贯通,与实践结合的重要性。
这次论文编写使得所学的知识与实践相结合,更让我领略到了MATLAB的强大计算功能,以及其在各个领域的广泛应用。
[参考文献]
[1]刘卫国.MATLAB程序设计与应用(第二版)[M].北京:
高等教育出版社,2006.
[2]宜明.数学建模与数学实验[M].浙江大学出版社,2010.
[3]MATALAB在数据处理中的应用(16期)科技信息,2009
[4]刘志俭.MATALAB应用程序接口用户指南[M].北京:
科学出版社2000。