其中第二类中的函数scatteredInterpolant可以给出points凸包之外的插值,利用参数ExtrapolationMethod设置外插的方式,而其它的函数不可以。
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值。
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
例:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为
12,9,9,10,18 ,24,28,27,25,20,18,15,13
问题:推测中午12点(即13点)时的温度.
功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。
x:原始数据点
Y:原始数据点
xi:插值点
Yi:插值点
(1)yi = interp1(x,y,xi,method)
用指定的算法计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。
’cubic’:该方法保留单调性与数据的外形;
功能 二维数据内插值
(1)ZI = interp2(X,Y,Z,XI,YI,method)
返回矩阵ZI,其元素包含对应于参量XI 与YI(可以是向量、或同型矩阵) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi 与Yi,此时,输出向量Zi 与矩阵meshgrid(xi,yi)是同型的。
(2)ZI = interp2(Z,XI,YI)
缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。
用指定的算法method 计算二维插值:
’linear’:双线性插值算法(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。
(4)VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。
%用指定的算法method 作插值计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值;
‘nearest’:最邻近插值。
功能 数据格点
(1)ZI = griddata(x,y,z,XI,YI,method)
用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。
用指定的算法method 计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’: 基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4 中的griddata 算法。
功能 三次样条数据插值
格式
(1)yy = spline(x,y,xx)
功能 生成用于画三维图形的矩阵数据
格式 [X,Y] = meshgrid(x,y) 将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,
这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或曲面作图。
[X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
[X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。
a=[3.946 05.193 505.762 1006.311 1506.795 2007.257 2507.704 3008.170 350...8.603 4009.073 4509.511 50010.001 55010.435 60010.932 65011.400 700...
11.938 75012.428 80012.995 85013.560 90014.246 95015.063 1000]
x=a(:,2)
y=a(:,1)
x2=1:60:1200
y2=interp1(x,y,x2, 'pchip')
plot(x,y,'bo',x2,y2,'r*')
legend('千分尺数据','分段插值数据','Location', 'Best')
grid on
xlabel('x 容量值(L)'),ylabel('y 电流值(mA)')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)