三次样条数据插值——spline
命令4 interpft
功能 用快速Fourier算法作一维插值
格式 y = interpft(x,n) %返回包含周期函数x在重采样的n个等距的点的插值y。若length(x)=m,且x有采样间隔dx,则新的y的采样间隔dy=dx*m/n。注意的是必须n≥m。若x为一矩阵,则按x的列进行计算。返回的矩阵y有与x相同的列数,但有n行。
y = interpft(x,n,dim) %沿着指定的方向dim进行计算
命令5 griddata
功能 数据格点
格式 ZI =griddata(x,y,z,XI,YI) %用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata将返回曲面z在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid生成的一样)。XI可以是一行向量,这时XI指定一有常数列向量的矩阵。类似地,YI可以是一列向量,它指定一有常数行向量的矩阵。
=griddata(x,y,z,xi,yi) %返回的矩阵ZI含义同上,同时,返回的矩阵XI,YI是由行向量xi与列向量yi用命令meshgrid生成的。
[…] = griddata(…,method) %用指定的算法method计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’:基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4中的griddata算法。
命令6 spline
功能 三次样条数据插值
格式 yy =spline(x,y,xx) %对于给定的离散的测量数据x,y(称为断点),要寻找一个三项多项式file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png,以逼近每对数据(x,y)点间的曲线。过两点file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png和file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png只能确定一条直线,而通过一点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4个系数):
1.三次多项式在点file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png处有: file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png;
2.三次多项式在点file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png处有:file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png;
3.p(x)在点file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);
4.p(x)在点file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png处的曲率是连续的;
对于第一个和最后一个多项式,人为地规定如下条件:
①.file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png
②.file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png
上述两个条件称为非结点(not-a-knot)条件。综合上述内容,可知对数据拟合的三次样条函数p(x)是一个分段的三次多项式:
,其中每段file:///C:/Users/lx/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png都是三次多项式。
该命令用三次样条插值计算出由向量x与y确定的一元函数y=f(x)在点xx处的值。若参量y是一矩阵,则以y的每一列和x配对,再分别计算由它们确定的函数在点xx处的值。则yy是一阶数为length(xx)*size(y,2)的矩阵。
pp =spline(x,y) %返回由向量x与y确定的分段样条多项式的系数矩阵pp,它可用于命令ppval、unmkpp的计算。
例2-36
对离散地分布在y=exp(x)sin(x)函数曲线上的数据点进行样条插值计算:
>>x= ; y = exp(x).*sin(x);
>>xx= 0:.25:20;
>>yy= spline(x,y,xx);
>>plot(x,y,'o',xx,yy)
插值图形结果为图2-19。
页:
[1]