在 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')
给定以下示例,是否有一种方法可以在不生成整个精细间隔网格的情况下实现双三次插值?:
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')