1、二维插值之插值节点为网格节点
已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增。求(x,y)处的插值z。
Matlab可以直接调用interp2(x0,y0,z0,x,y,`method`)
其中 x0,y0 分别为 m维和 n维向量,表示节点, z0 为 n× m维矩阵,表示节点值, x,y
为一维数组,表示插值点, x 与 y 应是方向不同的向量,即一个是行向量,另一个是列
向量, z 为矩阵,它的行数为 y的维数,列数为 x的维数,表示得到的插值, 'method'
的用法同上面的一维插值。
如果是三次样条插值,可以使用命令
pp=csape({x0,y0},z0,conds,valconds), z=fnval(pp,{x,y})其中 x0,y0 分别为 m维和 n维向量, z0 为 m× n维矩阵, z为矩阵,它的行数为 x的维
数,列数为 y的维数,表示得到的插值,具体使用方法同一维插值。
eg:
(1)、用interp2函数插值:
x=100:100:500;
y=100:100:400;
z=[636 697 624 478 450
698 712 630 478 420
680 674 598 412 400
662 626 552 334 310];
p=100:1:500;
q=100:1:400;
q=q';%须为列向量
z0=interp2(x,y,z,p,q);%分段线性插值
z1=interp2(x,y,z,p,q,'spline');%三次线条插值
subplot(2,1,1);
mesh(p,q,z0);
title('分段线性插值');
subplot(2,1,2);
mesh(p,q,z1);
title('三次线条插值');%可以观察出,三次线条插值的图像更平滑
运行结果: