Matlab中2D插值的功能形式

red*_*ish 2 matlab interpolation

我需要从2D数据阵列构造插值函数.我需要返回实际函数的原因是,我需要能够将函数作为我需要数字集成的表达式的一部分进行评估.

出于这个原因,"interp2"不会削减它:它不会返回一个函数.

我可以使用"TriScatteredInterp",但这很重:我的网格间距相等(大); 所以我不需要delaunay三角化.

还有其他选择吗?

Iai*_*ham 5

(对"迟到"答案表示道歉,但如果现有答案对他们没有帮助,我会提出一些可能对他人有帮助的建议)

从你的问题不清楚所得到的函数需要多准确(或者有多大,'大'),但是你可以采用的一种方法是使用最小二乘或卡尔曼滤波器对你拥有的数据点进行回归 - 基于方法.您需要使用多个候选函数表单执行此操作,然后选择"最佳"表单,例如使用MAE或MSE等度量.

当然,这需要了解底层函数的形式,但是你的问题并不清楚你是否有这种信息.

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

方法是:

  1. 定义包含输入数据的x和y域的2D Universe
  2. 创建此Universe的2D模糊分区 - 选择分区大小以提供所需的准确性
  3. 使用输入数据应用离散F变换在3D模糊空间中生成模糊数据点
  4. 将反F变换作为函数句柄(以及模糊数据点)传递给集成函数

如果您不熟悉F变换,那么我前一段时间就发布了一篇关于如何在一维案例中将F变换用作通用逼近器的博客:http://iainism-blogism.blogspot.co.uk /2012/01/fuzzy-wuzzy-was.html

为了查看该方法背后的数学并将其扩展到多维案例,那么奥斯特拉维亚大学已经发表了博士论文,解释了它在各种工程问题中的应用,并提供了如何为2D宇宙案例构建它的例子:http://irafm.osu.cz/f/PhD_theses/Stepnicka.pdf