Python RBF插值:线性误差:奇异矩阵

Python RBF插值:线性误差:奇异矩阵,python,numpy,scipy,interpolation,Python,Numpy,Scipy,Interpolation,以下电话: rbf = Rbf(points[0], points[1], values,epsilon=2) 导致错误: LinAlgError: singular matrix 具有以下值: In [3]: points Out[3]: (array([71, 50, 48, 84, 71, 74, 89, 76, 70, 77, 74, 79, 83, 71, 72, 78, 73, 84, 75, 65, 73, 82, 48, 86, 74, 86, 66, 74,

以下电话:

rbf = Rbf(points[0], points[1], values,epsilon=2)
导致错误:

LinAlgError: singular matrix
具有以下值:

In [3]: points
Out[3]: 
(array([71, 50, 48, 84, 71, 74, 89, 76, 70, 77, 74, 79, 83, 71, 72, 78, 73,
       84, 75, 65, 73, 82, 48, 86, 74, 86, 66, 74, 68, 74, 81, 74, 88, 66,
       57, 50, 72, 86, 72, 92, 81, 67, 82, 78, 69, 70, 73, 71, 76, 72, 74,
       75]),
 array([32, 34,  4, 35,  1,  7, 47, 16, 37, 14, 65, 18, 32,  4,  3, 27, 25,
       34, 18, 25,  6, 25, 34, 41, 16, 35, 44,  2, 32,  2, 37, 60, 45, 32,
       33, 42, 54, 31, 18, 38, 24, 18, 45, 48,  9, 63, 56, 45,  9, 59,  5,
       12]))

In [4]: values
Out[4]: 
array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

我能做些什么来避免它,并且仍然解决插值问题呢?

我想你要做的是。您可以为此使用:

import numpy as np
from scipy.stats import gaussian_kde
from matplotlib import pyplot as pp

# kernel density estimate of the PDF
kde = gaussian_kde(points)

# evaluate the estimated PDF on a grid
x,y = np.mgrid[40:101,-20:101]
z = kde((x.ravel(),y.ravel())).reshape(*x.shape)

# plot
fig,ax = pp.subplots(1,1)
ax.hold(True)
pc = ax.pcolor(x,y,z)
cb = pp.colorbar(pc)
cb.ax.set_ylabel('Probability density')
ax.plot(points[0],points[1],'o',mfc='w',mec='k')

pp.show()

该模块还具有内核密度估计功能。

我得到了相同的错误。 最后我发现了我为什么会出错

有两个点具有相同的坐标。(74,2) 检查28、30的坐标值是否相同


在我看来,即使在同一点上有相同的值,它也会发出奇异矩阵误差。

如果所有的值都是1,那么你已经知道任何点的插值也应该是1。如果这些值不都是1,那么你(可能?)就不会遇到奇异矩阵错误。@unutbu-我想rbf会在每个值周围使用一个rbf。当我离开每个RBF的每个1时,值是否应该减小?(即,我将得到每个位置的高斯和)在
点指定的每个位置,径向基函数的和必须等于1。在这些点上,单个RBF不等于1。只有总和必须等于1。问题是,在所有这些点上,RBF的总和都不可能等于1。另外,不是高斯分布的。谢谢@unutbu-我想我要找的是不同的。也许我正在寻找的是我的点与RBF(例如高斯)的卷积。关于如何使用numpy/scipy实现这一点,您有什么想法吗?我拥有的X,Y,Z值(我在OP中包含的值)表示事件发生的位置,我想计算该事件发生的2D场的概率(概率随着我远离这些观察值而逐渐消失)。如果你有任何想法,让我知道,我会相应地更新帖子。