




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章MATLAB数据分析与多项式计算6.1数据统计分析6.2多项式计算6.3数据插值6.4曲线拟合
第6章MATLAB数据分析与多项式计算第6章MATLAB数据分析与多项式计算6.1数据统计分析在实际应用中,经常需要对各种数据进行统计处理,以便为科学决策提供依据。这些统计处理包括求数据序列的最大值和最小值、和与积、平均值和中值、累加和与累乘积、标准方差和相关系数、排序等,MATLAB提供了相关的函数来实现。6.1.1最大值和最小值第6章MATLAB数据分析与多项式计算MATLAB提供了求数据序列最大值的函数max和求最小值的函数min,它们的调用格式和操作过程类似。1.求向量的最大值和最小值求向量X的最大值的函数有两种调用格式,分别是:①y=max(X):返回向量X的最大值,并存入y。如果X中包含复数元素,则按模取最大值。②[y,k]=max(X):返回向量X的最大值,并存入y,最大值的序号存入k。如果X中包含复数元素,则按模取最大值。求向量X的最小值的函数是min(X),用法和max(X)相同。例如,求向量x的最大值,命令如下:>>x=[-43,72,9,16,23,47];>>y=max(x) %求向量x中的最大值y=72>>[y,k]=max(x) %求向量x中的最大值及该元素的位置y=72k=2第6章MATLAB数据分析与多项式计算2.求矩阵的最大值和最小值求矩阵A的最大值的函数有3种调用格式,分别是:①max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。②[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。③max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)等价;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。求矩阵最小值的函数是min,其用法和max函数相同。第6章MATLAB数据分析与多项式计算>>A=[13,-56,78;25,63,-235;78,25,563;1,0,-1];>>max(A,[],2)%求每行最大值ans=78635631>>max(A)%求每列最大值ans=7863563>>max(max(A))%求整个矩阵的最大值,也可使用max(A(:))ans=563例6-1求矩阵A每行及每列的最大值,并求整个矩阵的最大值。第6章MATLAB数据分析与多项式计算3.两个向量或矩阵对应元素的比较函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为:①U=max(A,B):A、B是两个同型的向量或矩阵,结果U是与A、B同型的向量或矩阵,U的每个元素等于A、B对应元素的较大者。②U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。min函数的用法和max函数相同。第6章MATLAB数据分析与多项式计算例如,求两个2×3矩阵x、y所有同一位置上的较大元素构成的新矩阵p。命令如下:>>x=[4,5,6;1,4,8];>>y=[1,7,5;4,5,7];>>p=max(x,y)%在x、y同一位置上的两个元素中找出较大值p=476458上例是对两个同样大小的矩阵操作,MATLAB还允许对一个矩阵和一个常数或单变量操作。例如:>>p=max(x,4.5)p=4.50005.00006.00004.50004.50008.0000第6章MATLAB数据分析与多项式计算6.1.2求和与求积数据序列求和用sum函数。设X是一个向量,A是一个矩阵,sum函数的调用格式为:①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行的各元素乘积。数据序列求积用prod函数,其使用方法与sum函数相同。第6章MATLAB数据分析与多项式计算例6-2求矩阵A的每行元素之和和全部元素之和。命令如下:>>A=[1,2,3,4;5,6,7,8;9,10,11,12];>>S=sum(A,2)S=102642>>sum(S)ans=78第6章MATLAB数据分析与多项式计算6.1.3平均值和中值数据序列的平均值指的是算术平均值。所谓中值,是指在数据序列中其值的大小恰好处在中间的元素。例如,数据序列-2,5,7,9,12的中值为7,即它的大小恰好处于数据序列各个值的中间,这是数据序列为奇数个的情况。如果为偶数个,则中值等于中间的两数之平均值。例如,数据序列-2,5,6,7,9,12中,处于中间的数是6和7,故其中值为6.5。第6章MATLAB数据分析与多项式计算求矩阵和向量元素的平均值的函数是mean。设X是一个向量,A是一个矩阵,函数的调用格式为:①mean(X):返回向量X的算术平均值。②mean(A):返回一个行向量,其第i个元素是A的第i列的算术平均值。③mean(A,dim):当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。求中值的函数是median,其调用方法和mean函数相同。第6章MATLAB数据分析与多项式计算例如,求向量x的平均值,命令如下:>>x=[9,-2,5,6,7,12];>>mean(x)ans=6.1667第6章MATLAB数据分析与多项式计算6.1.4累加和与累乘积设U=(u1,u2,u3,…,un)是一个向量,V、W是与U等长的另外两个向量,并且称V为U的累加和向量,W为U的累乘积向量。第6章MATLAB数据分析与多项式计算在MATLAB中,使用cumsum和cumprod函数能方便地求得向量和矩阵元素的累加和与累乘积向量,它们的调用格式相同,其中cumsum函数的调用格式为:①cumsum(X):返回向量X累加和向量。②cumsum(A):返回一个矩阵,其第i列是A的第i列的累加和向量。③cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。第6章MATLAB数据分析与多项式计算例6-3求s=1!+2!+…+6!的值。命令如下:>>x=cumprod(1:6)x=12624120720>>s=sum(x)s=873第6章MATLAB数据分析与多项式计算6.1.5标准差与相关系数1.求标准差对于具有n个元素的数据序列x1、x2、x3、…、xn,标准差的计算公式如下:或者其中第6章MATLAB数据分析与多项式计算MATLAB提供了计算数据序列的标准差的函数std。对于向量X,std(X)返回一个标准差。对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。std函数的一般调用格式为:Y=std(A,flag,dim)其中,dim取1或2。当dim=1时,求各列元素的标准差;当dim=2时,则求各行元素的标准差。flag取0或1,当flag=0时,按S1所列公式计算标准差;当flag=1时,按S2所列公式计算标准差。默认取flag=0,dim=1。第6章MATLAB数据分析与多项式计算例6-4对二维矩阵x,从不同维方向求出其标准方差。>>x=[4,5,6;1,4,8]%产生一个二维矩阵xx=
456148>>y1=std(x,0,1)y1=2.12130.70711.4142>>y2=std(x,1,1)y2=1.50000.50001.0000>>y3=std(x,0,2)y3=1.00003.5119>>y4=std(x,1,2)y4=0.81652.8674第6章MATLAB数据分析与多项式计算2.相关系数对于两组数据序列xi、yi(i=1,2,…,n),可以由下式计算出两组数据的相关系数:第6章MATLAB数据分析与多项式计算①corrcoef(X,Y):其中,X、Y是向量。corrcoef(X,Y)返回序列X和序列Y的相关系数,得到的结果是一个2×2矩阵,其中对角线上的元素分别表示X和Y的自相关系数,非对角线上的元素分别表示X与Y的相关系数和Y与X的相关系数,两个是相等的。corrcoef(X,Y)与corrcoef([X,Y])等价。②corrcoef(X):对于一般的矩阵X,corrcoef(X)返回从矩阵X形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵X一样。系数矩阵中第i行第j列的元素代表原矩阵X中第i个列向量和第j个列向量的相关系数。第6章MATLAB数据分析与多项式计算例6-5生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。>>X=randn(10000,5);>>M=mean(X)M=0.0059-0.0005-0.0036-0.0036-0.0104>>D=std(X)D=0.98790.99840.99260.98941.0131>>R=corrcoef(X)R=1.00000.0115-0.00130.01540.00420.01151.00000.0025-0.0109-0.0066-0.00130.00251.0000-0.0159-0.00570.0154-0.0109-0.01591.00000.00350.0042-0.0066-0.00570.00351.0000>>R=corrcoef(X(:,1),X(:,2))%X前两列的相关系数R=1.00000.01150.01151.0000第6章MATLAB数据分析与多项式计算6.1.6排序对向量元素进行排序是一个经常性的操作,MATLAB中对向量X进行排序的函数是sort(X),函数返回一个对X中的元素按升序排列的向量。sort函数也可以对矩阵A的各列或各行重新排序,其调用格式为:[Y,I]=sort(A,dim,mode)其中,Y是排序后的矩阵,而I记录Y中的元素在A中的位置。dim指明对A的列还是行进行排序,若dim=1,则按列排;若dim=2,则按行排。dim默认取1。mode指明按升序还是按降序排序,'ascend'按升序,'descend'按降序。mode默认取'ascend'。第6章MATLAB数据分析与多项式计算例6-6对下列矩阵做各种排序。命令如下:>>A=[1,-8,5;4,12,6;13,7,-13];>>sort(A) %对A的每列按升序排序>>sort(A,2,'descend')%对A的每行按降序排序>>[X,I]=sort(A) %对A按列排序,并将每个元素所在行号送矩阵I第6章MATLAB数据分析与多项式计算6.2多项式计算在MATLAB中,n次多项式用一个长度为n+1的行向量表示,缺少的幂次项系数为0。如果n次多项式表示为:P(x)=anxn+an-1xn-1+an-2xn-2+…+a1x+a0则在MATLAB中,P(x)表达为向量形式:[an,an
1,an
2,…,a1,a0]。第6章MATLAB数据分析与多项式计算6.2.1多项式的四则运算1.多项式的加减运算MATLAB没有提供专门进行多项式加减运算的函数。事实上,多项式的加减运算就是其所对应的系数向量的加减运算。对于次数相同的两个多项式,可直接对多项式系数向量进行加减运算。如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用0补足,使同式中的各多项式具有相同的次数。第6章MATLAB数据分析与多项式计算例如,计算(x3-2x2+5x+3)+(6x-1),对于和式的后一个多项式6x-1,它仅为1次多项式,而前面的是3次。为确保两者次数相同,应把后者的系数向量处理成[0,0,6,-1]。命令如下:>>a=[1,-2,5,3];>>b=[0,0,6,-1];>>c=a+bc=1-2112第6章MATLAB数据分析与多项式计算2.多项式乘法运算函数conv(P1,P2)用于求多项式P1和P2的乘积。其中,P1、P2是两个多项式系数向量。例6-7求多项式x4+8x3-10与多项式2x2-x+3的乘积。命令如下:>>A=[1,8,0,0,-10];>>B=[2,-1,3];>>C=conv(A,B)C=
215-524-2010-30执行结果得到一个6次多项式:2x6+15x5-5x4+24x3-20x2+10x-30第6章MATLAB数据分析与多项式计算3.多项式除法函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法运算。其中,Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。这里,Q和r仍是多项式系数向量。deconv是conv的逆函数,即有P1=conv(P2,Q)+r。第6章MATLAB数据分析与多项式计算例6-8求多项式x4+8x3-10除以多项式2x2-x+3的结果。>>A=[1,8,0,0,-10];>>B=[2,-1,3];>>[P,r]=deconv(A,B)P=0.50004.25001.3750r=000-11.3750-14.1250第6章MATLAB数据分析与多项式计算6.2.2多项式的导函数求多项式的导函数用polyder函数,其调用格式如下。①p=polyder(P):求多项式P的导函数。②p=polyder(P,Q):求P·Q的导函数。③[p,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。上述函数调用中,参数P、Q是多项式的向量表示,结果p、q也是多项式的向量表示。第6章MATLAB数据分析与多项式计算例6-9求有理分式的导数。命令如下:>>P=1;>>Q=[1,0,5];>>[p,q]=polyder(P,Q)p=-20q=1010025第6章MATLAB数据分析与多项式计算6.2.3多项式的求值MATLAB提供了两种求多项式值的函数:polyval与polyvalm,它们的输入参数均为多项式系数向量P和自变量x。两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。第6章MATLAB数据分析与多项式计算1.代数多项式求值polyval函数用来求代数多项式的值,其调用格式为:Y=polyval(P,x)若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。第6章MATLAB数据分析与多项式计算例6-10已知多项式x4+8x3-10,分别取x=1.2和一个2×3矩阵为自变量,计算该多项式的值。命令如下:>>A=[1,8,0,0,-10];%4次多项式系数>>x=1.2;%取自变量为一数值>>y1=polyval(A,x)y1=5.8976>>x=[-1,1.2,-1.4;2,-1.8,1.6];%给出一个矩阵x>>y2=polyval(A,x)%分别计算矩阵x中各元素为自变量的多项式之值y2=-17.00005.8976-28.110470.0000-46.158429.3216第6章MATLAB数据分析与多项式计算2.矩阵多项式求值polyvalm函数用来求矩阵多项式的值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值。设A为方阵,P代表多项式x3-5x2+8,那么polyvalm(P,A)的含义是:A*A*A-5*A*A+8*eye(size(A))而polyval(P,A)的含义是:A.*A.*A-5*A.*A+8*ones(size(A))第6章MATLAB数据分析与多项式计算例6-11仍以多项式x4+8x3-10为例,以2×2矩阵为自变量分别用polyval和polyvalm计算该多项式的值。命令如下:>>A=[1,8,0,0,-10]; %多项式系数>>x=[-1,1.2;2,-1.8]; %给出一个矩阵x>>y1=polyval(A,x) %计算代数多项式的值y1=-17.00005.897670.0000-46.1584>>y2=polyvalm(A,x) %计算矩阵多项式的值y2=-60.584050.649684.4160-94.3504第6章MATLAB数据分析与多项式计算6.2.4多项式求根n次多项式具有n个根,当然这些根可能是实根,也可能含有若干对共轭复根。MATLAB提供的roots函数用于求多项式的全部根,其调用格式为:x=roots(P)其中,P为多项式的系数向量,求得的根赋给向量x,即x(1)、x(2)、…、x(n)分别代表多项式的n个根。第6章MATLAB数据分析与多项式计算例6-12求多项式x4+8x3-10的根。命令如下:>>A=[1,8,0,0,-10];>>x=roots(A)x=-8.0194+0.0000i1.0344+0.0000i-0.5075+0.9736i-0.5075-0.9736i第6章MATLAB数据分析与多项式计算若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为:P=poly(x)若x为具有n个元素的向量,则poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。第6章MATLAB数据分析与多项式计算例6-13已知:①计算f(x)=0的全部根。②由方程f(x)=0的根构造一个多项式g(x),并与f(x)进行对比。命令如下:>>P=[3,0,4,-5,-7.2,5];>>X=roots(P) %求方程f(x)=0的根X=-0.3046+1.6217i-0.3046-1.6217i-1.0066+0.0000i1.0190+0.0000i0.5967+0.0000i>>G=poly(X) %求多项式g(x)G=1.0000-0.00001.3333-1.6667-2.40001.6667第6章MATLAB数据分析与多项式计算6.3数据插值如果要得到这些离散点以外的其他点的数值,就需要根据这些已知数据进行插值。根据被插值函数的自变量个数,插值问题分为一维插值、二维插值和多维插值等;根据是用分段直线、多项式或样条函数来作为插值函数,插值问题又分为线性插值、多项式插值和样条插值等。MATLAB提供了一维、二维、N维数据插值函数interp1、interp2和interpn,以及3次样条插值函数spline等。第6章MATLAB数据分析与多项式计算6.3.1一维数据插值如果被插值函数是一个单变量函数,则数据插值问题称为一维插值。一维插值采用的方法有线性方法、最近方法、3次多项式和3次样条插值。在MATLAB中,实现这些插值的函数是interp1,其调用格式为:Y1=interp1(X,Y,X1,method)函数根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的已知向量,分别描述采样点和采样值。若同一个采样点有多种采样值,则Y可以为矩阵,Y的每一列对应一组采样。X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。第6章MATLAB数据分析与多项式计算method用于指定插值方法,允许的取值有:①'linear':线性插值。线性插值是默认的插值方法,它是把与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。②'nearest':最近点插值。根据插值点与已知数据点的远近程度进行插值。插值点优先选择较近的数据点进行插值操作。第6章MATLAB数据分析与多项式计算③'pchip':分段3次Hermite插值。MATLAB中有一个专门的3次Hermite插值函数pchip(X,Y,X1),其功能及使用方法与函数interp1(X,Y,X1,'pchip')相同。④'spline':3次样条插值。所谓3次样条插值,是指在每个分段(子区间)内构造一个3次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有光滑的条件。MATLAB中有一个专门的3次样条插值函数spline(X,Y,X1),其功能及使用方法与函数interp1(X,Y,X1,'spline')相同。第6章MATLAB数据分析与多项式计算例6-14给出以下概率积分的数据表如表6-1所示,用不同的插值方法计算f(0.472)。x0.460.470.480.49f(x)0.48465550.49375420.50274980.5116683>>x=0.46:0.01:0.49;%给出x和f(x)>>f=[0.4846555,0.4937542,0.5027498,0.5116683];>>formatlong>>interp1(x,f,0.472)%用默认方法,即线性插值计算f(0.472)ans=0.495553320000000>>interp1(x,f,0.472,'nearest')%用最近点插值计算f(0.472)ans=0.493754200000000>>interp1(x,f,0.472,'pchip')%用3次Hermite插值计算f(0.472)ans=0.495561119712056>>interp1(x,f,0.472,'spline')%用3次样条插值计算f(0.472)ans=0.495560736000000formatshort第6章MATLAB数据分析与多项式计算例6-15某检测参数f随时间t的采样结果如表6-2,用数据插值法计算t=2,12,22,32,42,52时的f值。t051015202530f3.10252.256879.51835.92968.84136.25237.9t35404550556065f6152.76725.36848.36403.56824.77328.57857.6>>T=0:5:65;>>X=2:10:52;>>F=[3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,6725.3,6848.3,6403.5,6824.7,7328.5,7857.6];>>F1=interp1(T,F,X)%用线性插值方法插值>>F2=interp1(T,F,X,'nearest')%用最近点插值方法插值>>F3=interp1(T,F,X,'pchip')%用3次Hermite插值方法插值>>F4=interp1(T,F,X,'spline')%用3次样条插值方法插值第6章MATLAB数据分析与多项式计算6.3.2二维数据插值当函数依赖于两个自变量变化时,其采样点就应该是一个由这两个参数组成的一个平面区域,插值函数也是一个二维函数。对依赖于两个参数的函数进行插值的问题称为二维插值问题。同样,在MATLAB中,提供了解决二维插值问题的函数interp2,其调用格式为:Z1=interp2(X,Y,Z,X1,Y1,method)其中,X、Y是两个向量,分别描述两个参数的采样点,Z是与参数采样点对应的函数值,X1、Y1是两个向量或标量,描述欲插值的点。Z1是根据相应的插值方法得到的插值结果。method的取值与一维插值函数相同。X、Y、Z也可以是矩阵形式。第6章MATLAB数据分析与多项式计算例6-16设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行插值。命令如下:>>x=0:0.1:1;y=0:0.2:2;>>[X,Y]=meshgrid(x,y); %产生自变量网格坐标>>Z=X.^2+Y.^2; %求对应的函数值>>interp2(x,y,Z,0.5,0.5) %在(0.5,0.5)点插值ans=0.5100>>interp2(x,y,Z,[0.50.6],0.4)%在(0.5,0.4)点和(0.6,0.4)点插值ans=0.41000.5200>>interp2(x,y,Z,[0.50.6],[0.40.5])%在(0.5,0.4)点和(0.6,0.5)点插值ans=0.41000.6200%下一命令在(0.5,0.4),(0.6,0.4),(0.5,0.5)和(0.6,0.5)各点插值>>interp2(x,y,Z,[0.50.6]',[0.40.5])ans=0.41000.52000.51000.6200第6章MATLAB数据分析与多项式计算例6-17某实验对一根长10m的钢轨进行热源的温度传播测试。用d表示测量点距离(m),用t表示测量时间(s),用c表示测得各点的温度(℃),测量结果如表6-3所示。
cdt02.557.51009514
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日语口译员短期劳动合同
- 餐厅转让合同范本
- 战略合作框架协议书
- 二手精装房屋买卖合同书
- 肖像权授权合同协议范本
- 绿化小区文明施工方案
- 四川大型活动篷施工方案
- 会计合同范例
- 云南新房正规合同范例
- 加盟除甲醛合同范例
- 脱口秀实战指南(如何从零开始写段子)
- 建筑工程挂靠协议模板
- 山东省济宁市2025年高考模拟考试(一模)思想政治试题(含答案)
- 玻璃水项目可行性研究报告模板
- 旅游规划与开发 课件 第四章 旅游地形象策划与功能分区
- 保险入职培训模板
- 2024年江苏食品药品职业技术学院高职单招语文历年参考题库含答案解析
- 2024年人民防空知识竞赛题库及答案(50题)
- 变电站防误闭锁装置管理
- 房地产市场报告 -锐理2024年成都房地产市场年报 20250110
- 2024年湖北高中学业水平合格性考试生物试卷真题(含答案详解)
评论
0/150
提交评论