gpt4 book ai didi

python - Scipy ConvexHull 和 QHull : rank/dimension is not maximal

转载 作者:太空狗 更新时间:2023-10-29 23:58:39 27 4
gpt4 key购买 nike

我正在尝试使用库 Scipy 和 ConvexHull 创建一个 Convex Hull。据我所知,它调用 QHull。

当我要添加的点没有“完整维度”时,就会出现问题。示例:

from scipy.spatial import ConvexHull
import numpy as np
points = np.append([[0,2]],[[2,0]],axis=0)
hull = ConvexHull(points)

具有输出:

Traceback (most recent call last):
File "C:/folder/vertices_scipy2.py", line 5, in <module>
hull = ConvexHull(points)
File "scipy\spatial\qhull.pyx", line 2230, in scipy.spatial.qhull.ConvexHull.__init__ (scipy\spatial\qhull.c:20317)
File "scipy\spatial\qhull.pyx", line 328, in scipy.spatial.qhull._Qhull.__init__ (scipy\spatial\qhull.c:3639)
QhullError: Qhull error

但是,如果我添加额外的点,使凸包具有完整维度:

from scipy.spatial import ConvexHull
import numpy as np
points = np.append([[0,0],[0,2]],[[2,0]],axis=0)
hull = ConvexHull(points)

然后一切正常。一个例子和另一个例子的区别(我做过很多其他的例子,所以我很确定)是第一种情况下的凸包在二维空间中是一维的,而在第二种情况下,是 2-二维空间中的维度(即全维度)。

有什么想法吗?我想从 docs 开始传递一些 qhull_options表明,正如答案中提到的那样:

QHullError Raised when Qhull encounters an error condition, such as geometrical degeneracy when options to resolve are not enabled.

但是,我已经阅读了很多 options in QHull他们似乎都没有解决这个问题。我随机尝试了其中一些,但收效甚微。

任何帮助都会有所帮助。我正在开发一个程序来创建数百个这样的外壳,其中一些不是全尺寸的。

最佳答案

ConvexHull 似乎不支持退化凸包。

点数必须至少为维数加一才能具有非退化凸包。

例如在平面上,您需要 3 个点才能获得非退化外壳:3 个点的凸包将是一个三角形,而退化外壳将是 2 个点之间的线段。

事实上 docs提到:

Raises: QhullError Raised when Qhull encounters an error condition, such as geometrical degeneracy when options to resolve are not enabled.

关于python - Scipy ConvexHull 和 QHull : rank/dimension is not maximal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com