您的位置:首页 > 编程语言 > MATLAB

MATLAB在多项式插值及曲线拟合方面的应用

2007-08-01 22:24 399 查看

1.一维插值

MATLAB的一维插值有多项式插值和FFT插值两种。
1)多项式插值
用interp1()函数进行一维多项式插值。语法格式为:
yi=interp1(x,y,xi,method)
其中,x、y和xi均为矢量。x和y为给定的长度相同的矢量,y是函数值矢量,x是与y对应的自变量的矢量;xi矢量包含用于插值的点;method用于指定插值方法,包括:
(1)最近邻插值(method='nearest')
(2)线性插值(method='linear')
(3)三次样条插值(method='spline')
(4)三次插值(method='pchip'或'cubic')
以下是一维线性插值实例,指令如下:
x=[-2 1 5 10 20];
y=[1 9 11 20 24];
xi=3;
yi=interp1(x,y,xi, 'linear')
执行结果为:yi=10。
2)基于FFT的插值
函数interpft()用基于FFT的方法进行一维插值。调用形式为:
y=interpft(x,n)
其中,x是一个包含周期函数值的矢量,这些值在等间隔的点上采集;n是样本大小。

2.二维插值

用函数interp2()进行二维插值。该函数调用的一般形式为:
ZI=interp2(X,Y,Z,XI,YI,method)
其中,Z是一个矩形数组,包含二维函数的值,X和Y为大小相同的数组,包含相对于Z的给定值。XI和YI为包含插值点数据的矩阵,method表示插值方法:
(1)最近邻插值(method='nearest')
(2)双线性插值(method='linear')
(3)双三次插值(method='cubic')

3.多维插值

1)三维数据插值
函数interp3()用于三维插值,计算三维样本V中数据点之间的值。调用格式为:
VI=interp3(X,Y,Z,V,XI,YI,ZI,method)
其中,X、Y和Z矩阵指定数据点,其值由V给定;矩阵V包含与X、Y和Z对应的值;XI、YI和ZI为interp3()函数对V中数据进行插值的点。对于三维数据,插值方法有:
(1)最近邻插值(method='nearest')
(2)线性插值(method='linear')
(3)三次插值(method='cubic')
2)多维数据插值
用interpn()函数进行更高维数据的插值,调用形式如下:
VI=interpn(X1,X2,X3,…,V,Y1,Y2,Y3,…,method)
高维数据插值,同样有最近邻插值、线性插值和三次插值3种方法。
3)多维数据网格化
用ndgrid()函数为高维函数评价和插值生成数据数组。语法格式为:
[X1,X2,X3,…]=ndgrid(x1,x2,x3,…)

2 曲线拟合

MATLAB用polfit()函数计算数据集的多项式在最小二乘法意义上的系数,调用形式为:
p=polfit(x,y,n)
例如,对数据
x=[1 2 3 4 5];
y=[5.5 43.1 128 290.7 498.4];
进行三次多项式拟合
p=polfit(x,y,3)
执行后返回矢量p为多项式的系数,其高次项在前,低次项在后。结果为:
p=[-0.1917 31.5821 -60.3262 35.3400]
即最后拟合的函数为:
y=-0.1917x^3+31.5821x^2-60.3262x+35.3400
文章引用自:
blog.sina.com.cn/gislxf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: