专题五 数据分析与多项式计算
5.1 数据统计分析
求最大元素和最小元素
max():求向量或矩阵的最大元素
min():求向量或矩阵的最小元素
当参数为向量时,函数有两种调用格式:
- y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
- [y,k]=max(X):返回向量X的最大值存入y,最大值元素的序号存入k,如果X中包含复数元素,则按模取最大值。
当参数为矩阵时,函数有三种调用格式:
- 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行上的最大值。
求平均值与中值
- mean():求算数平均值
- median():求中值
求和与求积
- sum():求和函数
- prod():求积函数
累加和与累乘积
- cumsum():累加和函数
- cumprod():累乘积函数
求标准差与相关系数
std():计算标准差函数
调用格式:
- std(X):计算向量X的标准差
- std(A):计算矩阵A的各列的标准差
- std(A,flag,dim):flag取0或1,当flag=0,按S1所列公式计算样本标准差;当flag=1时,按S2所列公式计算总体标准差。标准情况下,flag=0,dim=1。dim=1时,按列计算,dim=时按行计算。
相关系数
corrcoef():相关系数函数
调用格式:
- corrcoef(A):返回由矩阵A所形成的一个相关系数矩阵,其中第i行第j列的元素表示原矩阵A中第i列和第j列的相关系数,由此说明相关系数矩阵是一个方阵。
- corrcoef(X,Y):在这里,X\Y是向量,他们与corrcoef(X,Y)的作用一样,用于求X\Y向量之间的系数。
排序
-
sort[X]:对向量X按升序排列
-
[Y,I]=sort(A,dim,mode)
其中,dim指明对A的列还是行进行排序。mode指明按升序还是降序排序,若取“ascend”则按升序,若取“descend”则按降序,默认为升序。输出参数中,Y是排序后的矩阵,而I记录Y中的元素在A中的位置
5.2 多项式计算
多项式的表示
在MATLAB中,n次多项式用一个长度为n+1的行向量表示。
注意事项:
- 多项式系数向量的顺序是从高到低
- 多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1
- 如果有的项没有,系数向量相应位置应用0补足
多项式的四则运算
-
加减运算
多项式加减运算十分简单,即相应向量相加减
-
乘法运算
conv(P1,P2):多项式相乘函数
-
除法运算
[Q,r]=deconv(P1,P2):多项式相除函数
其中,Q返回多项式P1除以P2的商式,r返回P1除以P2的余式,Q和r仍是多项式系数向量。
deconv是conv的逆函数,因此有P1=conv(Q,P2)+r
多项式的求导
polyder():多项式求导函数
调用格式:
- p=polyder(P):求多项式P的导函数
- p=polyder(P.Q):求P*Q的导函数
- [ ,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q
多项式的求值
-
polyval(p,x):代数多项式求值
p为多项式系数向量;x可以是标量、向量或矩阵。若x为标量,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值
-
polyvalm(p,x):矩阵多项式求值
其调用格式与polyval相同,但含义不同。ployvalm函数要求x为方阵,以方阵为自变求多项式的值,相关运算计算的是矩阵运算。
多项式的求根
roots(p):多项式求根函数
其中,p为多项式的系数向量
若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为:p=poly(x)
5.3 数据插值
数据插值可以根据有限个点的取值状况,合理估算出附近其他点的取值,从而节约大量的实验和测试资源,节省大量的人力、物力和财力。
从数学上来说,数据插值是一种函数逼近的方法。
interp1():一维插值函数
调用格式:Y1=interp1(X,Y,X1,method)
根据X、Y的值计算函数在X1处的值,其中X、Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。
method参数用于指定插值的计算方法,常用的取值有以下四种:
- linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
- nearest:最近点插值,选择最近样本点的值作为插值数据
- pchip:分段3此埃尔米特插值,采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
- spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续地一阶和二阶导数。
多项式次数并非越高越好,次数越高,越容易产生震荡而偏离原函数,这种现象称为龙格现象。
线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关,n越大,误差越小。
3次埃尔米特插值和3次样本插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性,而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。
intrep2():二维插值函数
调用格式:Z1=interp2(X,Y,Z,X1,Y1,method)
X、Y是两个向量,表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。
5.4 曲线拟合
如果数据插值中的数据在测量时没有得到准确值,那么这样得到的数据会有很大的误差。
与数据插值类似,曲线拟合也是一种函数逼近的方法,已知x上的x个采样点以及函数值y,构造函数去逼近未知函数,使得误差在某种意义下达到最小。
在曲线拟合中,用于实现曲线拟合实现方法是polyfit(),多项式拟合函数,这个函数的功能是求得最小二乘拟合多项式系数。
调用格式:
- P=polyfit(X,Y,m)
- [P,S]=polyfit(X,Y,m)
- [P,S,mu]=polyfit(X,Y,m)
根据样本数据X和Y,产生一个m次多项式P及其在采样点误差数据S,mu是一个二元向量,mu(1)是meax(X),而mu(2)是std(X)
曲线拟合虽然功能强大,但是并不是适用于所有场景,对于一些敏感预测通常要采用多种预测方式。
5.5 数据插值与曲线拟合的比较
相同点:
- 都属于函数逼近方法
- 都能根据有限的样本数据去估算其他数据
不同点:
- 在实现方法上,数据插值要求逼近函数经过样本点,而曲线拟合不要求逼近函数经过样本点,只要求总体误差最小
- 数据插值通过分段逼近,没有整体的逼近函数,而曲线拟合有整体的函数表示式
- 数据插值一般用于样本区间内的插值计算,而曲线拟合不仅可以估算区间内的其他点的函数值,还可以预测时序数据的发展趋势,以及从统计数据中总结一般性经验
- 如果样本数据是精确数据,适合数据插值,如果为统计数据或存在误差,则适合用曲线拟合的方法