在 Matlab 中使用 interp2 对特定点进行三次插值

Cubic interpolation for specific points using interp2 in Matlab

给定以下示例,是否有一种方法可以在不生成整个精细间隔网格的情况下实现双三次插值?:

    years = [5,10,20,25,40];
    service = 1:3;
wage = [50 99 787.685
          779 795 850
          803 779 388
          886 753 486
          849 780 598];
    w = interp2(service,years,wage,1.5,37.5,'cubic')

Warning: The 'cubic' method requires the grid to have a uniform spacing. Switching the method from 'cubic' to 'spline' because this condition is not met.

我明白警告的原因。因此希望通过指定特定点来找到解决方案,而不必生成整个等距表面(可用数据不是等距的)。不一定必须是 interp2。我将不得不 运行 对数百个表面和数百个查询点执行此操作,因此需要非常快地返回 "w"。 有什么想法吗?

如果你坚持使用'cubic'插值方法,你可以使用griddata插值方法,它是指定用于插值散乱数据,即未定义在均匀间隔网格上的数据:

years = [5,10,20,25,40];
service = 1:3;
wage = [50 99 787.685
    779 795 850
    803 779 388
    886 753 486
    849 780 598];
w = griddata(service,years,wage,1.5,37.5,'cubic')