数据处理与多项式计算.ppt

上传人:小飞机 文档编号:6050158 上传时间:2023-09-18 格式:PPT 页数:38 大小:404KB
返回 下载 相关 举报
数据处理与多项式计算.ppt_第1页
第1页 / 共38页
数据处理与多项式计算.ppt_第2页
第2页 / 共38页
数据处理与多项式计算.ppt_第3页
第3页 / 共38页
数据处理与多项式计算.ppt_第4页
第4页 / 共38页
数据处理与多项式计算.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《数据处理与多项式计算.ppt》由会员分享,可在线阅读,更多相关《数据处理与多项式计算.ppt(38页珍藏版)》请在三一办公上搜索。

1、第5章数据处理与多项式计算,电子工程学院 通信工程,【本章学习目标】,掌握数据统计和分析的方法。掌握数值插值与曲线拟合的方法及其应用。掌握快速傅立叶变换的应用方法。掌握多项式的常用运算。,目录,5.1 数据统计处理5.2 数据插值5.3 曲线拟合5.4 离散傅立叶变换5.5 多项式计算5.6 非线性方程数值求解,5.1 数据统计处理,5.1.1 最大值和最小值1求最大值和最小值max(A)如果A是向量,则返回向量A的最大值。如果A中包含复数元素,则按模取最大值。如果A是矩阵,则返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。Y,U=max(A)如果A是向量,则返回向量A的最大值存入

2、Y,最大值的序号存入U。如果A中包含复数元素,则按模取最大值。如果A是矩阵,则Y向量记录A的每列的最大值,U向量记录每列最大值的行号。max(A,dim)仅用于矩阵。dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。,【例5.1】分别求矩阵 中各列和各行元素中的最大值。x=54,86,453,45;90,32,64,54;-23,12,71,18;y,l=max(x)%求矩阵x中各列元素的最大值及其这些元素的行下标y=90 86 453 54l=2 1 1 2y=max(x,2)%命令中dim=2,故查找操作

3、在各行中进行y=453 90 71求矩阵最小值的函数是min,其用法和max完全相同。,2两个向量或矩阵对应元素的比较函数max和min还能对两个同型的向量或矩阵进行比较。max函数调用格式如下。max(A,B):A、B是两个同型的向量或矩阵,返回值是与A、B同型的向量或矩阵,其中的每个元素等于A、B对应元素的较大者。max(A,n):n是一个标量,返回值是与A同型的向量或矩阵,其中的每个元素等于A对应元素和n中的较大者。【例5.2】已知,求矩阵x、y所有同一位置上的较大元素构成的新矩阵p。x=443,45,43;67,34,-43;y=65,73,34;61,84,326;p=max(x,y

4、)p=443 73 43 67 84 326,5.1.2 求和与求积数据序列求和的函数是sum。sum函数的调用格式如下。sum(A):如果A是一个向量,则返回向量各元素的和。如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的元素和。sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。数据序列求积的函数是prod,其用法和sum完全相同。,【例5.3】已知,求矩阵A的每行元素的乘积和全部元素的乘积。A=1:4;5:8;9:12;S=prod(A,2)%求A的每行元素的乘积S=24 1680 11880

5、P=prod(S)%求A的全部元素的乘积,即12!P=479001600,5.1.3 平均值和中值数据序列的平均值指的是算术平均值。中值是指在数据序列中其值的大小恰好处在中间的元素。例如数据序列2,5,7,9,12的中值为7如果数据为偶数个,则中值等于中间的两项之平均值。例如,数据序列2,5,6,7,9,12中,处于中间的数是6和7,故其中值为此两数之平均值6.5。求数据序列平均值的函数是mean,mean函数的调用格式如下。mean(A):如果A是一个向量,则返回向量的算术平均值。如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的算术平均值。mean(A,dim):当dim为1时

6、,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。求数据序列中值的函数是median,其用法和mean完全相同。,【例5.4】分别求向量x=9,4,7,-8,2与y=9,4,7,-8,2,15的平均值和中值。x=9,4,7,-8,2;%奇数个元素mean(x)median(x)ans=2.8000ans=4y=9,4,7,-8,2,15;%偶数个元素mean(y)median(y)ans=4.8333ans=5.5000,5.1.4 累加和与累乘积所谓累加和或累乘积,是指从数据序列的第1元素开始直到当前元素进行累加或累乘,作为结果序列的当前元素

7、值。在MATLAB中,使用cumsum和cumprod函数求得向量和矩阵元素的累加和与累乘积向量。cumsum函数的调用格式如下。cumsum(A):如果A是一个向量,则返回向量的累加和。如果A是一个矩阵,则返回一个矩阵,其第i列是A的第i列的累加和向量。cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。求累乘积的函数是cumprod,其用法和cumsum完全相同。,【例5.5】求s=1+2+22+210的值。x=1,ones(1,10)*2x=1 2 2 2 2 2 2 2 2 2 2y=cumprod

8、(x)y=1 2 4 8 16 32 64 128 256 512 1024s=sum(y)s=2047,5.1.5 标准方差与相关系数1求标准方差方差描述了一组数据波动的大小,方差越小,数据波动越小。在MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数的一般调用格式为Y=std(A,flag,dim)其中flag取0或1,当flag=0时,按1所列公式计算标准方差;当flag=1时,按2所列公式计算标准方差。dim取1或2,当dim=1时,求各列元素

9、的标准方差;当dim=2时,则求各行元素的标准方差。默认flag=0,dim=1。,a=7,4,9,8,10,7,8,7,8,7;7,6,10,5,9,8,10,9,5,6;mean(a)ans=7.5000 7.5000std(a)ans=1.5811 1.9579两人成绩的平均值相同,但小明的成绩的标准方差较小,说明小明的成绩波动较小,成绩更稳定。,2相关系数相关系数用来衡量两组数据之间的线性相关程度。corrcoef函数用于求数据的相关系数矩阵。corrcoef(X,Y):求向量X和Y的相关系数。corrcoef(X):返回从矩阵X形成的一个相关系数矩阵。它把矩阵X的每列作为一个变量,然

10、后求它们的相关系数。例如:X=1.1,1.2,1.0,0.9,1.2,1.1,0.9,0.6,1.0,0.9,1.1,0.9,1.1,1.0,0.7;Y=14,13,15,15,13,14,16,17,14,16,15,16,14,15,17;R=corrcoef(X,Y)R=1.0000-0.9265-0.9265 1.0000,5.1.6 排序MATLAB提供了对向量X进行排序的函数sort(X),函数返回一个对X中的元素按升序排列的新向量。sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为Y,I=sort(A,dim,mode)其中Y是排序后的矩阵,而I记录Y中的元素在A中的位

11、置。dim指明对A的列还是行进行排序,若dim=1,则按列排;若dim=2,则按行排。mode指明按升序还是降序排序,ascend为升序,descend为降序。dim默认取1,mode默认取ascend。,【例5.8】对二维矩阵 做各种排序。A=1,-8,5;4,12,6;13,7,-13;sort(A,2,descend)%对A的每行按降序排序ans=5 1-8 12 6 4 13 7-13X,I=sort(A)%对A按列排序,并将每个元素所在行号送矩阵IX=1-8-13 4 7 5 13 12 6I=1 1 3 2 3 1 3 2 2,5.2 数据插值,5.2.1 一维数据插值若已知的数据

12、集是平面上的一组离散点集,即被插值函数是一个单变量函数,则数值插值问题称为一维插值。在MATLAB中,实现插值的函数是interp1,其调用格式为Y1=interp1(X,Y,X1,method)函数根据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。method是插值方法,允许的取值如下。linear:线性插值。线性插值是默认的插值方法。它是把与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。nearest:最近点插值。根据已知插值点与已知数据点的远近程度进行插值。

13、插值点优先选择较近的数据点进行插值操作。cubic:3次多项式插值。根据已知数据求出一个3次多项式,然后根据该多项式进行插值。spline:3次样条插值。所谓3次样条插值,是指在每个分段(子区间)内构造一个3次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有光滑的条件。,【例5.9】表5.3所示为我国06个月婴儿的体重、身长参考标准,用3次样条插值分别求得婴儿出生后半个月到5个半月每隔1个月的身长、体重参考值。表5.3我国婴儿体重、身长计量表,设时间变量h为一行向量,t 为一个两列矩阵,其中第1列存放身长,第2列储存体重。命令如下:h=0:1:6;t=50.6,56.5,59.6,6

14、2.3,64.6,65.9,68.1;3.27,4.97,5.95,6.73,7.32,7.70,8.22;XI=0.5:1:5.5XI=0.5000 1.5000 2.5000 3.5000 4.5000 5.5000YI=interp1(h,t,XI,spline)%用3次样条插值计算,5.2.2 二维数据插值若已知的数据集是三维空间中的一组离散点集,即被插值函数依赖于两个自变量变化时,插值函数也是一个二维函数。对依赖于两个参数的函数进行插值的问题称为二维插值问题。解决二维插值问题的函数是interp2,其调用格式为Z1=interp2(X,Y,Z,X1,Y1,method)其中X、Y是两

15、个向量,分别描述两个参数的采样点,Z是与参数采样点对应的函数值,X1、Y1是两个向量或标量,描述欲插值的点,Z1是根据相应的插值方法得到的插值结果,method的取值与一维插值函数相同。X、Y、Z也可以是矩阵形式。,【例5.10】表5.4为某企业从1968-2008年,工龄为10年、20年和30年的职工的月均工资数据。试用线性插值求出1973-2003年每隔10年,工龄为15年和25年的职工月平均工资。x=1968:10:2008;h=10:10:30;W=507,793,1032,1265,2496;696,951,1391,1737,2703;877,1503,2228,3267,4982

16、;xi=1973:10:2003;hi=15;25;WI=interp2(x,h,W,xi,hi),5.3 曲线拟合,曲线拟合的目的也是用一个较简单的函数去逼近一个复杂的或未知的函数。构造函数y=g(x)去逼近实际函数f(x),但它放弃在插值点两者完全相等的要求,使它在某种意义下最优。MATLAB曲线拟合的最优标准是采用常见的最小二乘原理,所构造的g(x)是一个次数小于插值节点个数的多项式。曲线拟合的最小二乘原理,就是使上述拟合多项式在各节点处的偏差g(xi)yi的平方和达到最小。【例5.11】已知数据x,y如表5.5所示,试求2次拟合多项式f(x),然后求x=0.05,0.25,0.45,0

17、.65,0.85,1.05各点的函数近似值。,x=0:0.1:1;y=-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2;f=polyfit(x,y,2)%计算2次拟合多项式的系数f=-9.8108 20.1293-0.0317故 f(x)=9.8108 x2+20.1293x0.0317。,可以用polyval函数按所得的多项式计算xi各点上多项式的值,polyval函数将后面详细介绍。下面先用polyval求得xi各点上的函数近似值:xi=0.05:0.2:1.05;yi=polyval(f,xi)plot(x,y,:o,xi

18、,yi,-*)图中虚线为数据表x,y构成的折线,实线为拟合多项式f(x)在xi各点上的函数近似值f(xi)所构成的曲线。,5.4 离散傅立叶变换,5.4.1 离散傅立叶变换算法概述,5.4.2 离散傅立叶变换的实现fft(X):返回向量X的离散傅立叶变换。设X的长度(即元素个数)为N,若N为2的幂次,则为以2为基数的快速傅立叶变换,否则为运算速度很慢的非2幂次的算法。对于矩阵X,fft(X)应用于矩阵的每一列。fft(X,N):计算N点离散傅立叶变换。它限定向量的长度为N,若X的长度小于N,则不足部分补上零;若大于N,则删去超出N的那些元素。对于矩阵X,它同样应用于矩阵的每一列,只是限定了向量

19、的长度为N。fft(X,dim)或fft(X,N,dim):这是对于矩阵而言的函数调用格式,前者的功能与fft(X)基本相同,而后者则与fft(X,N)基本相同。只是当参数dim=1时,该函数作用于X的每一列;当dim=2时,则作用于X的每一行。,【例5.12】给定数学函数 x(t)=3cos(220t+/3)+5sin(250t),取N=128,试对t从01s采样,用fft作快速傅立叶变换,绘制相应的振幅频率图。N=128;%采样点数T=1;%采样时间终点t=linspace(0,T,N);%给出N个采样时间ti(I=1:N)x=3*cos(2*pi*20*t+pi/3)+5*sin(2*p

20、i*50*t);%求各采样点样本值xdt=t(2)-t(1);%采样周期f=1/dt;%采样频率(Hz)X=fft(x);%计算x的快速傅立叶变换XF=X(1:N/2+1);%F(k)=X(k)(k=1:N/2+1)f=f*(0:N/2)/N;%使频率轴f从零开始,f/N为频域采样间隔plot(f,abs(F),-*);%绘制振幅频率图xlabel(Frequency);ylabel(|F(k)|);,5.5 多项式计算,5.5.1 多项式的四则运算1多项式的加减运算在MATLAB中,多项式的加减运算就是其所对应的系数向量的加减运算。如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用

21、0补足,使同式中的各多项式具有相同的次数。例如,计算(x32x2+5x+3)+(6x1),命令如下:a=1,-2,5,3;b=0,0,6,-1;c=a+bc=1-2 11 2,2多项式乘除运算函数conv(P1,P2)用于求多项式的乘积,其中P1、P2是两个多项式的系数向量。函数Q,r=deconv(P1,P2)用于对多项式作除法运算,其中P1、P2是两个多项式的系数向量,返回值Q是商式的系数向量,r是余式的系数向量。,A=1,8,0,0,-10;B=2,-1,3;C=conv(A,B)C=2 15-5 24-20 10-30P,r=deconv(A,B)P=0.5000 4.2500 1.3

22、750r=0 0 0-11.3750-14.1250,从上面的运行可知,两个多项式的乘积是一个6次多项式:2x6+15x5 5x4+24x320 x2+10 x30。多项式A除以多项式B的商式P为0.5x2+4.25x+1.375,余式r为11.375x14.125。,5.5.2 多项式的导函数对多项式求导数的函数如下。p=polyder(P):求多项式P的导函数p=polyder(P,Q):求PQ的导函数p,q=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。上述函数中,参数P、Q是多项式的系数向量,结果p、q也是多项式的系数向量。,5.5.3 多项式的求值MAT

23、LAB提供了两种求多项式值的函数:polyval与polyvalm,它们的输入参数均为多项式系数向量P和自变量x。两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。1代数多项式求值polyval函数用来求代数多项式的值,其调用格式为Y=polyval(P,x)若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。,【例5.15】已知多项式x4+8x3-10,分别取x=1.2和23矩阵为自变量计算该多项式的值。程序如下:A=1,8,0,0,-10;%4次多项式系数x=1.2;%取自变量为一数值y1=polyval(A,x)x=-1,1.2,-1

24、.4;2,-1.8,1.6%取自变量为一个矩阵y2=polyval(A,x)%分别计算矩阵x中各元素为自变量的多项式之值,2矩阵多项式求值polyvalm函数用来求矩阵多项式的值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值。设A为方阵,P代表多项式x35x2+8,那么polyvalm(P,A)的含义为A*A*A5*A*A+8*eye(size(A)%矩阵之间的运算而polyval(P,A)的含义为A.*A.*A5*A.*A+8*ones(size(A)%元素之间的运算,【例5.16】已知多项式x4+8x3-10,取22矩阵为自变量

25、分别用polyval和polyvalm计算该多项式的值。程序如下:A=1,8,0,0,-10;%多项式系数x=-1,1.2;2,-1.8;%给出一个矩阵xy1=polyval(A,x)%计算代数多项式的值y2=polyvalm(A,x)%计算矩阵多项式的值,5.5.4 多项式求根roots函数用于求多项式的全部根,其调用格式为x=roots(P)其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),x(n)分别代表多项式的n个根。若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为P=poly(x)其中x为具有n个元素的向量。poly(x)建立以x为其根的多项式

26、,且将该多项式的系数赋给向量P。,【例5.17】已知 f(x)=2x4-12x3+3x2+5(1)计算f(x)=0的全部根。(2)由方程f(x)=0的根构造一个多项式g(x),并与f(x)作对比。P=2,-12,3,0,5;X=roots(P)%求方程f(x)=0的根G=poly(X)%求多项式g(x),5.6 非线性方程数值求解,5.6.1 单变量非线性方程求解z=fzero(fname,x0,tol,trace)其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,默认时取tol=eps。trace指

27、定迭代信息是否在运算中显示,为1时显示,为0时不显示,默认时trace为0。【例5.18】求f(x)=e 2xx=0在x0=0附近的根。步骤如下。(1)建立函数文件funx.m。function fx=funx(x)fx=exp(-2*x)-x;(2)调用fzero函数求根。z=fzero(funx,0.0)z=0.4263也可以直接使用表达式字符串求解:z=fzero(exp(-2*x)-x,0.0),5.6.2 非线性方程组的求解求解非线性方程组需要用到MATLAB的优化工具箱(Optimization Toolbox)。对于非线性方程组F(X)=0,用fsolve函数求其数值解。fsolve函数的调用格式为X=fsolve(fun,X0,option)其中X为返回的解fun是用于定义需求解的非线性方程组的函数文件名X0是求根过程的初值option为最优化工具箱的选项设定最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。例如,Display选项决定函数调用时中间结果的显示方式,其中off为不显示,iter表示每步都显示,final则只显示最终结果。optimset(Display,off)将设定Display选项为off。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号