表面拟合

计算科学 matlab 回归
2021-12-22 21:32:40

我不需要完整的答案,只需要一些建议。

我在一个卷中有一个稀疏的点矩阵。我知道存在通过这些点的表面,并且该表面大部分是平坦且相对光滑的,具有一些小的谐波含量。请看下面的两张图片(第一张的表面有点太复杂,第二张的表面有点太简单)。

我正在寻找一种方法(拉普拉斯曲面/样条线等)以将我的点拟合到最小阶的最佳曲面。实际上,我期望用少于 30 个系数来描述我的表面。

关于我可以使用的方法的任何建议(使用 Matlab 或 Mathematica)?如果我能得到一个工作示例,那就太棒了。

太复杂 太容易了

编辑:

好吧,看来我的期望太高了。事实上,在没有模型的情况下很难拟合 2D 曲面。我最近尝试了一个非常简单的模型:

f(x,y)=a0+a1x3+a2x2y+a3xy+a4y2xa5y3+b1sin(b2x)+b3cos(b4x)+c1sin(c2x)+c3cos(c4x)

有了这个,我可以用最小二乘法和正规方程拟合我的表面。结果还不错,但最好找到一种可以使用迭代方法构建输出函数的“智能”算法。我还没有找到这样的东西。

4个回答

除了使用稀疏矩阵技术的克里金法外,您还可以查找有关稀疏近似(又名稀疏分解)方法或稀疏高斯图形模型的文献。

我将首先研究在 MATLAB 中广泛使用的薄板样条 (TPS)。它们使用简单,并且在许多情况下都表现得相当好。这是文档: http ://www.mathworks.de/de/help/curvefit/tpaps.html?refresh=true

更详细的信息在这里:http ://user.engineering.uiowa.edu/~aip/papers/bookstein-89.pdf

我猜你已经尝试过 matlab 的“fit”函数了。

f = fit( [x, y], z, 'poly23' )

有关此功能的更多信息:matlab fit

看起来它将是高斯过程回归(也称为克里金法)的一个很好的候选者。

编辑:我再解释一下。考虑具有 $N$ 个节点的网格上所有函数的空间 $X$,$X := \mathbb{R}^N$。例如,给定一个向量 $x \in X$,第一个分量 $x_1$ 是函数在第一个网格点的值,$x_2$ 是第二个网格点的值,以此类推。X of all functions on a grid with N nodes, X:=RN. For example, given a vector xX, the first component x1 is the value of the function at the first gridpoint, x2 is the value at the second gridpoint, and so forth.

基本思想是在 $X$, $$\pi_\text{prior} \sim e^{-x^TC^{-1} x},$$ 上放置一个高斯先验分布,并考虑进行测量 $y_k = x_k$ 在一些感兴趣的节点 $k$ 处的函数。X,

πpriorexTC1x,
and consider making measurements yk=xk of the function at some nodes of interest k.

我们可以结合先验信息和测量信息,使用贝叶斯定理在 $X$ 上构建后验分布。必须小心,因为这种可能性是不正确的分布,但可以做到。X using Bayes' theorem. Some care must be taken since the likelihood is an improper distribution, but it can be done.

然后取后验的平均值以获得适合数据的良好函数。这个均值函数相当于你从克里金法得到的。


先验协方差 $C_{ij}$ 的条目衡量您期望函数在节点 $i$ 和 $j$ 处的相似程度。几个典型的例子是,Cij, measure how similar you expect the function to be at nodes i and j. A couple typical examples are,

  • 指数衰减协方差:随着衰减率 $q$(例如,$q=2$ 是最常见的)和特征长度 $\rho$:$$C_ {ij} \propto e^{-\frac{||x_i - x_j||^q}{\rho}}.$$ 这个矩阵是一个密集的 $n^2$-by-$n^2$ 矩阵,这可能会带来一些计算困难。q (eg., q=2 is the most common) and characteristic length ρ:
    Cije||xixj||qρ.
    This matrix is a dense n2-by-n2 matrix, which may present some computational difficulties.
  • 拉普拉斯协方差:协方差以与椭圆 PDE 的 greens 函数相同的方式下降,$\Delta^q C(x-x_0) = \delta_x$: $$C \propto \Delta^{-q},$ $ 其中 $\Delta$ 是(图)拉普拉斯算子这种协方差特别好,因为使用多重网格可以有效地应用 $\Delta^{-q}$。因此,您可以在需要时(或者它的平方根)计算密集衰减协方差矩阵的作用,除非实际上没有形成密集矩阵。ΔqC(xx0)=δx:
    CΔq,
    where Δ is the Δq can be done efficiently with multigrid. So, you can compute the action of a dense decaying covariance matrix whenever needed (or it's square root), except without actually forming the dense matrix.