资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,6,章,MATLAB,数据分析与数学计算,张登峰李忠新,2011.7,Content,6.1,数据统计处理,6.2,数据插值,6.3,多项式计算,6.4,非线性方程数值求解,6.5,函数极值,部分常用数值分析函数,cumprod,累积积向量,cumsum,累加和向量,mean,平均值,/,均值,factor,质因子,min,最小值,max,最大值,prod,数组元素的乘积,mediam,中间值,sort,按升序排列矩阵元素,sortrows,按升序排列行,std,标准差,sum,求和,trapz,梯形法数值积分,var,方差,corrcoef,相关系数,cov,协方差矩阵,conv,卷积,/,多项式乘法,deconv,反卷积,/,多项式除法,nextpow2,最接近的,2,的幂次,gradient,数值梯度,6.1,数据统计处理,6.1.1,最大值和最小值,MATLAB,提供的求数据序列的最大值和最小值的函数分别为,max,和,min,,两个函数的调用格式和操作过程类似。,1),求向量的最大值和最小值,求一个向量,X,的最大值的函数有两种调用格式,分别是:,y=max(X),:返回向量,X,的最大值存入,y,,如果,X,中包含复数元素,则按模取最大值。,y,I=max(X),:返回向量,X,的最大值存入,y,,最大值的序号存入,I,,如果,X,中包含复数元素,则按模取最大值。,求向量,X,的最小值的函数是,min(X),,用法和,max(X),完全相同。,例,6-1,求向量,x,的最大值。,命令如下:,x=-43,72,9,16,23,47;,y=max(x)%,求向量,x,中的最大值,y,l=max(x)%,求向量,x,中的最大值及其该元素的位置,2),求矩阵的最大值和最小值,求矩阵,A,的最大值的函数有,3,种调用格式,分别是:,(1)max(A),:返回一个行向量,向量的第,i,个元素是矩阵,A,的第,i,列上的最大值。,(2)Y,U=max(A),:返回行向量,Y,和,U,,,Y,向量记录,A,的每列的最大值,,U,向量记录每列最大值的行号。,(3)max(A,dim),:,dim,取,1,或,2,。,dim,取,1,时,该函数和,max(A),完全相同;,dim,取,2,时,该函数返回一个列向量,其第,i,个元素是,A,矩阵的第,i,行上的最大值。,求矩阵最小值的函数是,min,,其用法和,max,完全相同。,例,6-2,分别求,34,矩阵,x,中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。,3),两个向量或矩阵对应元素的比较,函数,max,和,min,还能对两个同型的向量或矩阵进行比较,调用格式为:,(1)U=max(A,B),:,A,B,是两个同型的向量或矩阵,结果,U,是与,A,B,同型的向量或矩阵,,U,的每个元素等于,A,B,对应元素的较大者。,(2)U=max(A,n),:,n,是一个标量,结果,U,是与,A,同型的向量或矩阵,,U,的每个元素等于,A,对应元素和,n,中的较大者。,min,函数的用法和,max,完全相同。,例,6-3,求两个,23,矩阵,x,y,所有同一位置上的较大元素构成的新矩阵,p,。,6.1.2,求和与求积,数据序列求和与求积的函数是,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,行的各元素乘积。,例,6-4,求矩阵,A,的每行元素的乘积和全部元素的乘积。,A=1,2,3,4;5,6,7,8;9,10,11,12;,S=prod(A,2),prod(s)%,求,A,的全部元素的乘积,6.1.3,平均值和中值,求数据序列平均值的函数是,mean,,求数据序列中值的函数是,median,。两个函数的调用格式类似,sum,为:,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,行的算术平均值。,median(A,dim),:当,dim,为,1,时,该函数等同于,median(A),;当,dim,为,2,时,返回一个列向量,其第,i,个元素是,A,的第,i,行的中值。,例,6-5,分别求向量,x=1,0.5,3,4,5,与,y=0,1.2,4,7,2,4,6,7,的平均值和中值。,6.1.4,累加和与累乘积,使用,cumsum,和,cumprod,函数能求得向量和矩阵元素的累加和与累乘积向量,函数的调用格式同,sum,为:,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,时,该函数等同于,cumprod(A),;当,dim,为,2,时,返回一个向量,其第,i,行是,A,的第,i,行的累乘积向量。,例,6-6,求向量,s=(1!,2!,3!,10!),的值。,Codes:s=cumprod(1:10),6.1.5,标准方差与相关系数,1,求标准方差,在,MATLAB,中,提供了计算数据序列的标准方差的函数,std,。对于向量,X,,,std(X),返回一个标准方差。对于矩阵,A,,,std(A),返回一个行向量,它的各个元素便是矩阵,A,各列的标准方差。,std,函数的一般调用格式为:,Y=std(A,flag,dim),其中,dim,取,1,或,2,。当,dim=1,时,求矩阵,A,各列元素的标准方差;当,dim=2,时,则求矩阵,A,各行元素的标准方差。,flag,取,0,或,1,,按不同公式计算标准方差,;当,flag=0,时,按,1,所列公式计算标准方差,当,flag=1,时,按,2,所列公式计算标准方差,。缺省,flag=0,,,dim=1,。,例,6-7,对二维矩阵,x,,从不同维方向求出其标准方差。,X=,;%,输入矩阵,x.,Y=std(X,0,1);%,求各列元素的标准差,.,y=std(X,0,2);%,求各行元素的标准差,.,思考:设二维矩阵,x,为正态分布数据,请计算其标准差。,2,相关系数,MATLAB,提供了,corrcoef,函数,可以求出数据的相关系数矩阵。,corrcoef,函数的调用格式为:,corrcoef(X),:返回从矩阵,X,形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵,X,一样。它把矩阵,X,的每列作为一个变量,然后求它们的相关系数。,corrcoef(X,Y),:在这里,,X,Y,是向量,它们与,corrcoef(X,Y),的作用一样。,例,6-8,生成满足正态分布的,100005,随机矩阵,然后求各列元素的均值和标准方差,再求这,5,列随机数据的相关系数矩阵。,命令如下:,X=randn(10000,5);,M=mean(X),D=std(X),R=corrcoef(X),6.1.6,排序,MATLAB,中对向量,X,是排序函数是,sort(X),,函数返回一个对,X,中的元素按升序排列的新向量。,sort,函数也可以对矩阵,A,的各列或各行重新排序,其调用格式为:,Y,I=sort(A,dim),其中,dim,指明对,A,的列还是行进行排序。若,dim=1,,则按列排;若,dim=2,,则按行排。,Y,是排序后的矩阵,而,I,记录,Y,中的元素在,A,中位置。,例,6-9,:对矩阵做各种排序,A=1,-8,5;4,12,6;13,7,-13;,sort(A)%,对,A,的每列按升序排序,-sort(A)%,对,A,的每行按降序排序,X,I=sort(A)%,对,A,按列排序,并将每个元素所在行号送给矩阵,I.,6.2,数据插值,6.2.1,一维数据插值,在,MATLAB,中,实现这些插值的函数是,interp1,,其调用格式为:,Y1=interp1(X,Y,X1,method),函数根据,X,Y,的值,计算函数在,X1,处的值。,X,Y,是两个等长的已知向量,分别描述采样点和样本值,,X1,是一个向量或标量,描述欲插值的点,,Y1,是一个与,X1,等长的插值结果。,method,是插值方法,允许的取值有,linear,、,nearest,、,cubic,、,spline,。,注,:,X1,取值范围不能超出,X,给定范围,否则给出,“,NaN,”,错误。,例,6-10,函数,y=f(x),对应点为:,x=0.2,0.5,0.9,1.2,1.4,1.6,1.8,2;y=0.2,0.5,1.4,3.4,2.6,2.1,1.8,1.2;,用不同的插值方法计算,y,在,x=/2,点的值。,注,:,MATLAB,中有一个专门的,3,次样条插值函数,Y1=spline(X,Y,X1),,其功能及使用方法与函数,Y1=interp1(X,Y,X1,spline,),完全相同。,例,6-11,某观测站测得某日,6:00,时至,18:00,时之间每隔,2,小时的室内外温度,(),,用,3,次样条插值分别求得该日室内外,6:30,至,17:30,时之间每隔,2,小时各点的近似温度,(),。,设时间变量,h,为一行向量,温度变量,t,为一个两列矩阵,其中第一列存放室内温度,第二列储存室外温度。命令如下:,h=6:2:18;,t=18,20,22,25,30,28,24;15,19,24,28,34,32,30;,XI=6.5:2:17.5,YI=interp1(h,t,XI,spline,)%,用,3,次样条插值计算,6.2.2,多维数据插值与曲线拟合,略,不讲。,6.3,多项式计算,n,次多项式是形如,P(x)=a,0,x,n,+a,1,x,n-1,+,+a,n-1,x+a,n,的式子。,在,MATLAB,中,多项式用行向量表示,多项式的系数按降幂排列:,P=a,0,a,1,a,n-1,a,n,或,P=a,0,a,1,a,n-1,a,n,如:多项式,x3-12x2+25x+6,表示为,p=1,-12,25,6,6.3.1,多项式的生成与表达,例:已知向量,A=1,34,80 0 0,,用此向量构造一多项式,(x-1)(x+34)(x+80)(x-0)(x-0),并显示结果。,解:,PA=poly(A),PAX=poly2str(PA,X),X5+113 X4+2606 X3-2720 X2,6.3.2,多项式的运算,
展开阅读全文