【问题标题】:Cubic interpolation for specific points using interp2 in Matlab在 Matlab 中使用 interp2 对特定点进行三次插值
【发布时间】:2017-05-03 11:01:59
【问题描述】:

鉴于以下示例,有没有一种方法可以在不生成整个细间距网格的情况下实现双三次插值?:

    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')

警告:'cubic' 方法要求网格具有统一的 间距。将方法从“立方”切换到“样条”,因为这样 条件不满足。

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

【问题讨论】:

  • 不确定我是否理解这个问题?您能否给出您想要提供的输入数据类型(以及预期的输出)。就目前而言,您的代码有效(尽管有警告)...
  • 你通常可以忽略警告,除非它说的是奇点等。它给了你正确的答案吗?在这种情况下,它可能会自动切换到“样条线”。

标签: matlab interpolation cubic spatial-interpolation bicubic


【解决方案1】:

如果您坚持使用'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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2012-03-25
    • 2019-05-10
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多