插值函数总结(下篇之二维插值)

Posted Jeossirey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插值函数总结(下篇之二维插值)相关的知识,希望对你有一定的参考价值。

命令2 interp2
功能:二维数据内插值(表格查找)
格式1:z1 = interp2(x,y,z,x1,y1) 
返回矩阵z1,其元素包含对应于参量x1与y1(可以是向量、或同型矩阵) 的元素, 即z1(i,j) ←[x1(i,j),y1(i,j)]。大家可以输入行向量和列向量x1与y1,此时,输出向量z1与矩阵meshgrid(x1,y1)是同型的。同时取决于由输入矩阵x、y 与 z 确定的二维函数z=f(x,y)。参量x与y必须是单调的,且相同的划分格式,就像由命令meshgrid 生成的一样。若x1与y1中有在x与y范围之外的点,则相应地返回NaN(Not a Number)。

参考实例:

[x,y] = meshgrid(-3:0.25:3);
z=peaks(x,y);
[x1,y1] = meshgrid(-3:0.125:3);
z1 = interp2(x,y,z,x1,y1);
surfl(x,y,z);
hold on;
surfl(x1,y1,z1+15)
axis([-3 3 -3 3 -5 20]);
shading flat
hold off

结果展示:


格式2:z1= interp2(x,y,z,x1,y1,method) 
用指定的算法method 计算二维插值:
’linear’:双线性插值算法(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。

 案例一:

years = 1950:10:1990;
service = 10:10:30;
wage = [150.697 199.592 187.625
179.323 195.072 250.287
203.212 179.092 322.767
226.505 153.706 426.730
249.633 120.281 598.243];
w = interp2(service,years,wage,15,1975)

结果展示:

w = 190.6288

我们可以利用interp2插值来求解出与指定的x1和y1相对应的z1。

案例二(当x与y维度相同时):

years = 1970:10:1990; %y
service = 10:10:30;  %x
wage = [150 199 187; 250 203 179; 153 426 249;];
x1=10:1:30;
y1=1970:1:1990;
z1= interp2(service,years,wage,x1,y1,"cubic")

结果展示:

z1 = 1×21    
  150.0000  172.1721  185.0352  191.2591  193.1792  192.7969  191.7792  191.4591  192.8352  196.5721  203.0000  212.1151  223.5792  236.7201  250.5312  263.6719  274.4672  280.9081  280.6512  271.0191  249.0000

我们就可以利用interp2插值来求解出与21组x1和y1相对应的21组z1。

案例三(当x与y维度不同时):

years = 1950:10:1990; %y
service = 10:10:30;  %x
wage = [150.697 199.592 187.625
179.323 195.072 250.287
203.212 179.092 322.767
226.505 153.706 426.730
249.633 120.281 598.243];
x1=linspace(10,30,21);
y1=linspace(1950,1990,21);
z1= interp2(service,years,wage,x1,y1,"cubic")

结果展示:

z1 = 1×21    
  150.6970  163.0182  171.9318  177.8079  181.0839  182.2643  181.9160  180.6725  179.2311  178.3883  179.0920  182.3675  189.2554  201.1017  219.6234  246.9901  285.4695  337.2082  404.7324  490.7684  598.2430

我们就可以利用interp2插值来求解出与21组x1和y1相对应的21组z1。

格式3:z1= interp2(z,x1,y1) 
缺省地,x=1:n、y =1:m,其中[m,n]=size(z)。再按第一种情形进行计算。


格式4:z1= interp2(z,n) 
作n次递归计算,在z的每两个元素之间插入它们的二维插值,这样,z的阶数将不断增加。 interp2(z)等价于interp2(z,1)。

以上是关于插值函数总结(下篇之二维插值)的主要内容,如果未能解决你的问题,请参考以下文章

插值函数总结(下篇之一维插值)

拟合函数:线性插值_样条插值(一维,二维,三维)_最小二乘拟合

numpy的一维线性插值函数

气象 python 二维线性插值

利用griddata进行二维插值

插值函数总结(上篇)