分散的数据插值



我有一组数据:

X Y Z
1 3 7
2 5 8
1 4 9
3 6 10

我想为X=2.5Y=3.5插值Z。我该怎么做?我在这里无法使用interp2,因为XY不是严格单调的(增加或减少)。

当前执行分散数据插值的首选方法是通过scatteredInterpolant对象类:

>> F = scatteredInterpolant([1 2 1 3].',[3 5 4 6].',[7 8 9 10].','linear') %'
F = 
  scatteredInterpolant with properties:
                 Points: [4x2 double]
                 Values: [4x1 double]
                 Method: 'linear'
    ExtrapolationMethod: 'linear'
>> Zi = F(2.5,3.5)
Zi =
    6.7910

替代语法,

>> P = [1 3 7; 2 5 8; 1 4 9; 3 6 10];
>> F = scatteredInterpolant(P(:,1:2),P(:,3),'linear')

有关scatteredInterpolant优于griddata的优点,请参见此数学页面上的插值数据。除句法差异外,两个主要优点是外推和天然邻居插值。如果要使用相同的插值插入新数据,则还具有在创建插支对象时重复使用三角测量的性能优势。

看来griddata是您要寻找的功能:

z = griddata( [1 2 1 3], [3 5 4 6], [7 8 9 10], 2.5, 3.5, 'nearest' )

最新更新