相关疑难解决方法(0)

在3D中拟合一条线

是否有任何算法可以从一组3D数据点返回直线方程?我可以找到很多来源,这些来源将给出2D数据集中的线的等式,但没有3D.

谢谢.

python numpy linear-algebra curve-fitting

20
推荐指数
2
解决办法
2万
查看次数

如何使用固定点进行多项式拟合

我一直在使用numpy(使用最小二乘法)在python中做一些拟合.

我想知道是否有办法让它适应数据同时迫使它通过一些固定点?如果不是python中有另一个库(或者我可以链接到的另一种语言 - 例如c)?

注意我知道可以通过将其移动到原点强制通过一个固定点并将常数项强制为零,如此处所述,但更通常地想知道2个或更多固定点:

http://www.physicsforums.com/showthread.php?t=523360

python numpy scipy

15
推荐指数
3
解决办法
9765
查看次数

如何权衡散点图中的点?

所以,我在Python中的polyfit(numpy.polynomial.polynomial.polyfit)函数中查找了有关weights参数的信息,看起来它与与各个点相关的错误有关.(如何在numpy.polyfit中包含测量误差)

但是,我想要做的与错误无关,而是权重.我有一个numpy阵列形式的图像,表明探测器中沉积的电荷量.我将该图像转换为散点图,然后进行拟合.但我希望这适合给予更多电荷沉积的点更多的权重,而不是那些电荷更少的点.这是权重参数的用途吗?

这是一个示例图像:淋浴的形象 这是我的代码:

def get_best_fit(image_array, fixedX, fixedY):
    weights = np.array(image_array)
    x = np.where(weights>0)[1]
    y = np.where(weights>0)[0]
    size = len(image_array) * len(image_array[0])
    y = np.zeros((len(image_array), len(image_array[0])))
    for i in range(len(np.where(weights>0)[0])):
        y[np.where(weights>0)[0][i]][np.where(weights>0)[1][i]] = np.where(weights>0)[0][i]
    y = y.reshape(size)
    x = np.array(range(len(image_array)) * len(image_array[0]))
    weights = weights.reshape((size))
    b, m = polyfit(x, y, 1, w=weights)
    angle = math.atan(m) * 180/math.pi
    return b, m, angle
Run Code Online (Sandbox Code Playgroud)

让我向您解释一下代码:

第一行将指定的电荷分配给称为权重的变量.接下来的两行得到沉积电荷> 0的点,因此存在一些电荷以捕获散射图的坐标.然后我得到整个图像的大小,以便稍后转换为一维数组进行绘图.然后我去通过图像,并试图让那里的一些电荷堆积的点的坐标(记住,电荷时,存储在变量weights).然后我重塑y坐标以获得一维数组,并从图像中获取所有相应y坐标的x坐标,然后将权重的形状也改变为一维.

编辑:如果有使用该np.linalg.lstsq函数的方法,这将是理想的,因为我也试图通过绘图的顶点.我可以重新定位绘图,使顶点为零,然后使用np.linalg.lstsq,但这不允许我使用权重.

python numpy data-fitting

14
推荐指数
2
解决办法
756
查看次数