【问题标题】:Multidimensional interpolation: return function多维插值:返回函数
【发布时间】:2021-04-08 22:12:28
【问题描述】:

我有一个 4 维数组。我可以在 Matlab 中使用 interpn 在数组值之间构造插值点。但是,此命令仅返回指定点的插值。有没有办法直接获得插值点的完整函数作为输出,然后我可以在任何点进行评估?

【问题讨论】:

  • 当你使用 interpn 时,你可以通过一次调用获得多个点的插值,这是你想要做的吗?您是在询问曲线拟合以获取函数的参数吗?
  • @KennethBoyd 获取一个函数会很方便,然后我可以在循环的不同点调用它。是的,实际上这将存储曲线拟合的参数。这样就不需要多次执行整个插值了。
  • 如果您的数据很嘈杂,并且您知道函数应该是什么样子,那么曲线拟合是有意义的。但是,如果噪音不是问题并且您不知道要适合什么功能,那么多次使用 interpn 可能会更快。与曲线拟合相比,插值可以非常快,除非拟合非常简单。
  • 这些插值方法是分段的,这意味着每个瓦片的函数定义都不同。这些函数是某种程度的二元多项式。我不认为将其作为一个函数来实现会有帮助。

标签: matlab interpolation numerical-methods spline


【解决方案1】:

简答:不。

稍长一点的答案: 有一些变通方法,您可以在 interpn 之上定义一个函数,尽管这需要重新计算插值。

例如

p = [1 2 3 4 5];
v = [12 16 31 10 6];

f = @(x) interpn(p,v,x,'cubic');

如果您想避免重新计算新点的插值,则需要插值是参数化的,但不一定是这种情况,例如如果您使用“最近”作为插值方法。根据您使用的插值类型(假设它是参数化的),可能会有更合适的不同函数。

【讨论】:

  • 不错,我还建议现有的 griddedInterpolantscatteredInterpolant 类来预先计算事物(或受到启发创建自定义类来预先计算和存储事物(梯度等)有用对于你自己的一些特定的插值方法。
猜你喜欢
  • 2018-09-25
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2014-07-23
  • 2014-10-12
  • 2012-05-07
  • 2020-12-17
相关资源
最近更新 更多