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