1

我有一个 np 坐标数组 -

Data[:,0] = x[:]
Data[:,1] = y[:]
Data[:,2] = z[:]

这表示具有缺失数据区域的点云。

您将如何将其用作某些插值函数(理想情况下为克里金法)的输入数据,该函数将在 X 和 Y 网格上给出插值 Z 值,定义为:

xmax = np.max(data[:, 0])
ymax = np.max(data[:, 1])
xmin = np.min(data[:, 0])
ymin = np.min(data[:, 1])
xnew = np.linspace(xmin,xmax,35)
ynew = np.linspace(ymin,ymax,35)
x = np.zeros(1225)
y = np.zeros(1225)

for i in range (0,35):
    for j in range(0,35):
        x[i*35+j] = xnew[i]
        y[i*35+j] = ynew[j]

我遇到了麻烦,因为我能找到的所有讨论 2D 插值(2D,因为它们的输入数组是 2D,描述空间中的 3D 点)都使用 mgrid。我不想要网格中的结果数据,我想要原始输入格式,基本上是点云输入和点云输出

4

1 回答 1

2

在 python 中,有很多例子的克里金/高斯过程回归的一个很好的实现是著名的机器学习包 scikit-learn 之一。它基于著名的 DACE matlab 实现。

有关高斯过程回归实现的文档可以在此页面和其中的链接中找到。您可以在本页底部找到 5 个教程。可以在此处找到可用内核的列表。

使用您提供的数据,您只需执行以下操作即可将简单模型与您选择的内核相匹配:

import sklearn
gp = sklearn.gaussian_process.GaussianProcessRegressor(kernel=RBF(10, (1e-2, 1e2)))
gp.fit(Data[:,0:1], Data[:,2])  

y_pred = gp.predict(the_grid_data_on_which _you_need_to_predict)
于 2017-08-02T06:50:10.980 回答