Matlab中二维插值的函数形式

Matlab中二维插值的函数形式,matlab,interpolation,Matlab,Interpolation,我需要从2D数据数组构造一个插值函数。我需要返回实际函数的东西的原因是,我需要能够将函数作为需要进行数值积分的表达式的一部分进行求值 出于这个原因,“interp2”并没有切断它:它不返回函数 我可以使用“TriScatteredInterp”,但这很重:我的网格是等间距的(而且很大);所以我不需要delaunay三角化 有其他选择吗?如果我理解正确,您希望对二维数据执行曲面/线积分。有很多方法可以做到,但可能不是你想要的方式。我也有同样的问题,这很烦人!我解决它的唯一方法是使用创建曲面,然后对

我需要从2D数据数组构造一个插值函数。我需要返回实际函数的东西的原因是,我需要能够将函数作为需要进行数值积分的表达式的一部分进行求值

出于这个原因,“interp2”并没有切断它:它不返回函数

我可以使用“TriScatteredInterp”,但这很重:我的网格是等间距的(而且很大);所以我不需要delaunay三角化


有其他选择吗?

如果我理解正确,您希望对二维数据执行曲面/线积分。有很多方法可以做到,但可能不是你想要的方式。我也有同样的问题,这很烦人!我解决它的唯一方法是使用创建曲面,然后对其进行集成

在您使用该工具(它也有一个GUI)创建适合的对象后,它将生成一个
sftool
对象,然后您可以使用该对象集成到(2-D)中

我还尝试了使用
interp2
的方法,得到了结果(与
sfobject
类似),但我不知道如何对数据进行数值积分(线/面)。创建
sfobject
然后集成它要快得多

这是我第一次这样做,所以我用数值计算的线积分来确认。根据斯托克定理,曲面积分和线积分应该是相同的,事实证明是相同的

我在数学stackexchange中问了一个问题,想对二维数据做线积分,最后做了一个曲面积分,然后用线积分来确认答案

(对于“迟交”的答案表示歉意,但如果现有答案对其他人没有帮助,我有一些建议可能会对他们有所帮助)

你的问题不清楚结果函数需要多精确(或“大”有多大),但你可以采用的一种方法是使用最小二乘法或基于卡尔曼滤波的方法对数据点进行回归。您需要对许多候选函数形式执行此操作,然后选择“最佳”函数形式,例如使用诸如MAE或MSE之类的度量

当然,这需要了解函数的基本形式,但您的问题并不清楚您是否拥有此类信息

另一种可行的方法(并且不需要知道底层函数可能是什么)是使用模糊变换(F变换)来生成线段,该线段为曲面提供局部近似

这方面的方法是:

  • 定义包含输入数据的x域和y域的二维域
  • 创建这个宇宙的2D模糊分区-选择分区大小以提供所需的精度
  • 使用输入数据应用离散F变换,以在三维模糊空间中生成模糊数据点
  • 将反F变换作为函数句柄(连同模糊数据点)传递给积分函数
  • 如果您不熟悉F变换,那么我不久前发布了一篇博客,介绍如何在1D情况下将F变换用作通用近似器:


    参见方法后面的数学并将其扩展到多维情况,然后奥斯特维亚大学发表了一篇博士论文,解释了它在各种工程问题上的应用,并提供了一个关于2D宇宙的构造的例子:

    如果你想要函数句柄,为什么不定义f= @(席,彝)席二(X,Y,Z,XI,Yi)?
    它可能有点慢,但我认为它应该会起作用。

    你能不能把它包装成一个表格?像polyfit2这样的东西对你有用吗?虽然我很感激你的建议,但我觉得你误解了我的问题。在Mathematica中,我想做的是使用“插值”函数().我目前为一位坚持使用Matlab的客户工作,因此我想知道这是否可行。本质上,我需要将2D表格转换为对象“f”,该对象的类(f)返回“function_handle”。计算f(x,y)时应在(x,y)处执行插值以合理的效率。也许我误解了你的问题!据我所知,你不能在MATLAB中这样做,至少不能使用程序中包含的函数/工具箱。但是,我想知道你想要计算什么类型的积分?我认为你应该编辑问题并包含积分等。这个问题是不是关于积分。