目录
数据插值
样本数据为精确数据时使用
数据插值的实现方法
在MATLAB中,一维插值函数为interp1(),其调用格式为:
Y1=interp1(X,Y,X1,method)
该语句将根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。
method参数用于指定插值方法,常用的取值有以下四种:
(1)linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
(2)nearest:最近点插值。选择最近样本点的值作为插值数据。若是中点,则取后一个点的值
(3)pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
(4)spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
x=[0,3,5,7,9,11,12,13,14,15];
y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];
subplot(2,2,1)
plot(x,y)
x1=0:0.1:15;
y1=interp1(x,y,x1,'linear');
subplot(2,2,2)
plot(x1,y1)
y2=interp1(x,y,x1,'pchip');
subplot(2,2,3)
plot(x1,y2)
y3=interp1(x,y,x1,'spline');
subplot(2,2,4)
plot(x1,y3)
四种方法的比较
线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小。
3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。
MATLAB中的二维插值函数为interp2(),其调用格式为:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量,表示两个参数的采样点,Z是采样
点对应的函数值。X1、Y1是两个标量或向量,表示要插值
的点。
曲线拟合
样本为统计数据或存在误差时适用
x=1790:10:2010;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];
subplot(2,2,1)
plot(x,y,'*');
p=polyfit(x,y,1);
polyval(p,2020)
plot(x,y,'*',x,polyval(p,x));
subplot(2,2,2)
plot(x,y,'*');
p=polyfit(x,y,2);
polyval(p,2020)
plot(x,y,'*',x,polyval(p,x));
subplot(2,2,3)
plot(x,y,'*');
p=polyfit(x,y,3);
polyval(p,2020)
plot(x,y,'*',x,polyval(p,x));
subplot(2,2,4)
plot(x,y,'*');
p=polyfit(x,y,4);
polyval(p,2020)
plot(x,y,'*',x,polyval(p,x));
与数据插值类似,曲线拟合也是一种函数逼近的方法。
构造函数g(x)去逼近未知函数f(x),使得误差
δi= g(xi)-f(xi)(i=1,2,3,…,n) 在某种意义下达到最小。
两个问题:
(1)用什么类型的函数做逼近函数?多项式函数
(2)误差最小到底怎么计算? 最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和来寻找数据的最佳函数匹配。
设p(x)是一个多项式函数
的值最小,则p(x)为原函数y=f(x)的逼近函数。
曲线拟合的实现方法
MATLAB中的多项式拟合函数为polyfit(),其功能为求得最小二乘拟合多项式系
数,其调用格式为:
(1)P=polyfit(X,Y,m)
(2)[P,S]=polyfit(X,Y,m)
(3)[P,S,mu]=polyfit(X,Y,m):根据样本数据X和Y,产生一个m次多项式P及其在采样点误差数据S,mu是一个二元向量,mu(1)是mean(X),而mu(2)是std(X)。
结论:
(1)要对问题的背景进行详细的分析。
(2)采样点并非越多越好,适当的时候,可以减少采样点,分段进行拟合。
功能:
(1)估算数据
(2)预测趋势
(3)总结规律