第六章 MATLAB的数据建模_第1页
第六章 MATLAB的数据建模_第2页
第六章 MATLAB的数据建模_第3页
第六章 MATLAB的数据建模_第4页
第六章 MATLAB的数据建模_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 MATLAB数据建模 本章主要学习数据挖掘和建模的一些基本方法和相关的MATLAB命令,包括插值,拟合,回归分析,函数逼近等。6.1多项式在MATLAB中,多项式是利用一个行向量来表示的,它的系数是按照降序方式排列的,例如,多项式p1(x)= x3+21x2+20x可以表示为: P1=1 21 20 0 %常数项为0 6.1.1多项式的求值、求根和部分分式展开1. 多项式求值函数polyval可以用来计算多项式在给定变量时的值,是按数组运算规则进行计算的。语法:polyval(p,s)说明:p为多项式, s为给定矩阵。【例6. 1】计算p1(x)= x3+21x2+20x多项式的值。&

2、gt;> p1=1 21 20 0;>> polyval(p1,2) %计算x=2时多项式的值 ans = 132 >>x=0:0.5:3;>>polyval(p1,x) %计算x为向量时多项式的值 ans = 0 15.3750 42.0000 80.6250 132.0000 196.8750 276.0000 2. 多项式求根§ roots用来计算多项式的根。语法:r=roots(p)说明:p为多项式;r为计算的多项式的根,以列向量的形式保存。§ 与函数roots相反,根据多项式的根来计算多项式的系数可以用poly函数来实现。

3、语法:p=poly (r)【例6.1续】计算多项式p1(x)= x3+21x2+20x的根以及由多项式的根得出系数。 >>roots(p1) %计算多项式的根 ans = 0 -20 -1 >> poly(0;-20;-1) %计算多项式的系数 ans = 1 21 20 0 3. 多项式部分分式展开*在许多的工程实际应用中,例如傅里叶变换,拉普拉斯变化和Z变换中,都会出现两个多项式的比值,这时就需要对多项式进行部分分式展开运算,用residue函数来实现将分式表达式进行多项式的部分分式展开成以下形式:语法:r,p,k=residue(b,a)说明:b和a分别是分子和分

4、母多项式系数行向量;r是r1 r2 rn行向量,表示部分分式展开的常数项;p为p1 p2 pn极点行向量;k为余数。【例6.2】将表达式进行部分分式展开。>> p1=1 21 20 0;>> p3=100 200;>> r,p,k=residue(p3,p1) r = -4.7368 -5.2632 10.0000p = -20 -1 0k = 程序分析:表达式展开结果为+0。6.1.2多项式的四则运算1. 加减法MATLAB没有提供专门进行多项式加减运算的函数,事实上,多项式的加减运算,就是其对应的系数向量的加减运算,加减运算时,向量的大小必须相同,缺项的

5、用零补齐。【例6.3】求多项式x3-2x2+5x+3和6x-1的和。>>clear all;>>p1=1 -2 5 3;>>p2=0 0 6 -1;>>c=p1+p2c= 1 -2 11 2也即c= x3-2x2+11x+22. 多项式的乘法和除法§ 多项式的乘法语法:p=conv(pl,p2) 说明:p是多项式p1和p2的乘积多项式。§ 多项式的除法语法:q,r=deconv(pl,p2) 说明:除法不一定会除尽,会有余子式。多项式p1被p2除的商为多项式q,而余子式是r。【例6.4】计算表达式。>> a1=1

6、0; %对应多项式s>> a2=1 1; %对应多项式s+1>> a3=1 20; %对应多项式s+20>> p1=conv(a1,a2) p1 = 1 1 0 >> p1=conv(p1,a3) %计算s(s+1)(s+20) p1 = 1 21 20 0 >> p2,r=deconv(p1,a3) %计算多项式除法的商和余子式 p2 = 1 1 0r = 0 0 0 0 >> conv(p2,a3)+r %用商*除式+余子式验算 ans = 1 21 20 0 3. 多项式的求导*§ 对多项式求导的函数是po

7、lyder,其调用格式为: p=polyder(p1);求多项式p1的导函数; p=polyder(p1,p2);求多项式p1和p2乘积的导函数; p,q= polyder(p1,p2);求多项式p1和p2之商的导函数,p,q分别是导函数的分子和分母。【例6.5】求有理分式f(x)= (x-1)/(x2-x+3)的导函数。>> clear all;>> p1=1 -1;>> p1=1 -1 3;>>p,q=polyder(p1,p2)p= -1 2 2q= 1 -2 7 -6 9结果表明,f(x)=(-x2+2x+2)/(x4-2x3+7x2-6

8、x+9)6.2拟合法在实际工程应用与科学实践中,经常要得到一条光滑的曲线,而实际却只能测得一些分散的数据点,此时,就需要利用这些离散的点,运用各种拟合方法来生成一条连续的曲线。曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。实例:温度曲线问题气象部门观测到一天某些时刻的温度变化数据为:t012345678910T1315171416192624262729试描绘出温度变化曲线。从已知的一组数据中,找出函数关系y=f(x),使得(误差)最小,称为最小二乘法曲线拟合。语法:p=polyfit(x,y,n)说明:x、y向量分别为N个数据点的横、纵坐标

9、;n是用来拟合的多项式阶次;p为拟合的多项式,p为n+1个系数构成的行向量。【例6.6】由以下离散数据拟合出多项式并画出曲线拟合图形x0.1.2.3.4.5.6.7.8.91y.3.511.41.61.9.6.4.81.52程序:>>x=0:.1:1;>>y=.3 .5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2>>n=3;>>p=polyfit(x,y,n) %找出3阶函数关系y=f(x)的系数向量>>xi=linspace(0,1,100);%生成100个X>>yi=polyval(p,xi); %多项式

10、求值>>plot(x,y,o,xi,yi,k:,x,y,b)>>legend(原始数据,3阶曲线) % 添加图例结果:p = 16.7832 -25.7459 10.9802 -0.0035多项式为:y=16.7832x3-25.7459x2+10.9802x-0.0035曲线拟合图形:也可由函数给出数据。【例6.7】由以下函数拟合出多项式并画出曲线拟合图形x=1:20,y=x+3*sin(x)程序:>>x=1:20;>>y=x+3*sin(x);>>p=polyfit(x,y,6) %找出6阶函数关系y=f(x)的系数向量>&

11、gt;xi=1inspace(1,20,100);>>yi=poyval(p,xi); %多项式求值函数>>plot(x,y,o,xi,yi,k:,x,y,b)>>legend(原始数据,6阶曲线) % 添加图例结果:p =0.0000 -0.0021 0.0505 -0.5971 3.6472 -9.7295 11.3304 再用10阶多项式拟合程序:>> x=1:20;>>y=x+3*sin(x);>>p=polyfit(x,y,10)>>xi=linspace(1,20,100);>>yi=p

12、olyval(p,xi);>>plot(x,y,'o',xi,yi,'k:',x,y,'b')>>legend('原始数据','10阶多项式') % 添加图例结果:p = Columns 1 through 7 0.0000 -0.0000 0.0004 -0.0114 0.1814 -1.8065 11.2360 Columns 8 through 11 -42.0861 88.5907 -92.8155 40.2671上机练习1:上机练习:例6.6,6.7熟悉拟合法6.3插值法在实际的科

13、研或工程研究中,常常需要在已有数据点的情况下,获得这些数据中间点的数据,如何能够更加光滑准确地得到这些点的数据,就需要使用不同的插值方法进行数据插值。插值运算就是根据有限个数据点的规律,构造一个解析表达式,插值得出相邻数据点之间的数值。实例:海底探测问题某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些有限的数据了解更多处的海底情况。并绘出较细致的海底曲面图。MATLAB提供了多种多样的数据插值函数,比较常见的如interp1函数用于实现一维数据插值,interp2函数则实现二维数据插值,lagrange插值,newton插值等,这些插值函数在获得数据的

14、平滑度、时间复杂度和空间复杂度方面性能相差都很大。1. 一维数据插值一维插值是指对一维数据点(xi,yi)进行插值。语法:yi=interp1(x,y,xi,method)说明:x、y为行向量;xi是插值范围内任意点的x坐标,yi则是插值运算后的对应y坐标;method是插值函数的类型,“linear”线性插值(默认),“nearest”最相邻插值法,“spline”三次样条插值法,“cubic”为三次多项式插值。线性插值:yi=interp1(x,y,xi),是interp1()的默认插值函数类型,由已知数据点连成一条折线,认为相临两个数据点之间的函数值就在这两点之间的连线上。一般来说,数据

15、点数越多,线性插值就越精确。【例6.8】已知数据:x0.1.2.3.4.5.6.7.8.91y.3.511.41.61.9.6.4.81.52求当xi=0.25时的yi的值,并画出线性插值,三次样条插值,三次多项式插值的图形。程序:>>x=0:.1:1;>>y=.3 .5 1 1.4 1.6 1 .6 .4 .8 1.5 2;>>yi0=interp1(x,y,0.25,'linear')yi0 = 0.3500>>xi=0:.02:1;>>yi=interp1(x,y,xi,'linear'); %

16、线性插值(默认),>>zi=interp1(x,y,xi,'spline'); %三次样条插值法,>>wi=interp1(x,y,xi,'cubic'); %三次多项式插值。% yi、zi、wi为对应xi的不同类型的插值。x、y为已知数据点。>>plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-')>>legend('原始点','线性点','三次样条','

17、三次多项式') % 添加图例结果:yi0 = 0.3500要得到给定的几个点的对应函数值,可用:>>xi =0.2500 0.3500 0.4500>>yi=interp1(x,y,xi,'spline')结果:yi =1.2088 1.5802 1.3454 2. 二维插值二维插值是指对两个自变量的插值,二维插值与一维插值的基本思想一致,应用原始数据点(x,y,z),求出插值点数据(xi,yi,zi)。1)二维网格数据插值interp2函数是用来进行二维插值的。语法:zi=interp2(x,y,z,xi,yi,method)说明:method

18、是插值函数的类型,“linear”线性插值(默认),“nearest”最相邻插值法,“spline”三次样条插值法,“cubic”为三次多项式插值。说明:这里x和y是两个独立的向量,它们必须是单调的。z是矩阵,是由x和y确定的点上的值。z和x,y之间的关系是z(i,:)=f(x,y(i),z(:,j)=f(x(j),y) 即:当x变化时,z的第i行与y的第i个元素相关,当y变化时z的第j列与x的第j个元素相关。如果没有对x,y赋值,则默认x=1:n, y=1:m。n和m分别是矩阵z的行数和列数。【例6.8】已知某处山区地形选点测量坐标数据为:x=0 0.5 1 1.5 2 2.5 3 3.5

19、4 4.5 5y=0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6海拔高度数据为:z=89 90 87 85 92 91 96 93 90 87 82 92 96 98 99 95 91 89 86 84 82 84 96 98 95 92 90 88 85 84 83 81 85 80 81 82 89 95 96 93 92 89 86 86 82 85 87 98 99 96 97 88 85 82 83 82 85 89 94 95 93 92 91 86 84 88 88 92 93 94 95 89 87 86 83 81 92 92 96 97 98 9

20、6 93 95 84 82 81 84 85 85 81 82 80 80 81 85 90 93 95 84 86 81 98 99 98 97 96 95 84 87 80 81 85 82 83 84 87 90 95 86 88 80 82 81 84 85 86 83 82 81 80 82 87 88 89 98 99 97 96 98 94 92 87其地貌图为:对数据插值加密形成地貌图。程序:>>x=0:.5:5;>>y=0:.5:6;>>z=89 90 87 85 92 91 96 93 90 87 82 92 96 98 99 95 91

21、 89 86 84 82 84 96 98 95 92 90 88 85 84 83 81 85 80 81 82 89 95 96 93 92 89 86 86 82 85 87 98 99 96 97 88 85 82 83 82 85 89 94 95 93 92 91 86 84 88 88 92 93 94 95 89 87 86 83 81 92 92 96 97 98 96 93 95 84 82 81 84 85 85 81 82 80 80 81 85 90 93 95 84 86 81 98 99 98 97 96 95 84 87 80 81 85 82 83 84 87 90 95 86 88 80 82 81 84 85 86 83 82 81 80 82 87 88 89 98 99 97 96 98 94 92 87;>>mesh(x,y,z) %绘原始数据图>>xi=linspace(0,5,50); %加密横坐标数据到50个>>yi=linspace(0,6,80); %加密纵坐标数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论