如何从不规则空间得到规则空间的值?

问个和Julia无关的问题。

我有一组(x,y,f(x,y))的值,由于(x,y)是从类似极坐标变换来的,所以它的形状有点奇葩。我希望能将数据规整一下,得到间隔相同的(x,y)的点的f(x,y)值。

曲面拟合可能不是很好,因为数据存在突变。而且我也没找到方便——阶数很高时不需要建模,输入x,y的阶数就自动拟合——的二维曲面拟合。

我知道地理上有个克里金法,我试了下,需要不断调参(而且效果不是很好)。

然后我想到建模的时候,有那种很多三角形,我想将(x,y)规整一下,然后在不规则的(x,y)中找到3个能把它围住的三个点,利用数学方法求一下值。但是如何找到离它最近的,刚好能将它包围的3个点呢?

总结下大概就是这3个问题了,任意解决一个就万分感谢:

  1. 有没有输入x,y阶数,不建模,就自动进行曲面拟合的Julia库?
  2. 如何从一堆点中,找到能包围某一点的最小三角形?(可能用算法迭代优化的话速度特别慢,不看好;应该有别的特别快的方法)
  3. 如何从不规则空间得到规则空间的值?

要得到规则点的值,实际上是一个插值问题。有很多插值算法,比如克里金、反距离加权、最近邻点、线性插值。1、如果已有数据是极坐标系下的规则点,可以把待插值的点转换到极坐标,判断待求点属于哪个网格,然后采用双线性插值求取,比较容易实现,计算量小。2、如果已有数据在极坐标和直角坐标都不规则,可以采用散点三角剖分算法进行网格剖分(b比如tetgen),判断待求点属于哪个网格,并在网格内进行插值,这种很耗时。

1 个赞

谢谢。这个极坐标比较特殊,是通过正则变换得到的。只是其中一个刚好具有角度含义。但是这个角度并不均匀,每次都是通过别的软件用正则变换算的角度。而且直角坐标和这个类极坐标并没有直接对应的变换。
不过提醒我了,或许可以不变回去,直接搜索不规则数据中距离最近3个点,构建平面然后计算该点的值。没必要找包围它的平面。计算量应该也不大。