我有一个3D数据数组,显示一个凹面图。我想找到所有不属于该图的点,但是在凸包内。我该怎么办?
我知道我应该使用convhull
函数,但我不确定(输入是一个大小为m by n
的数组,其中m
是点数并且n
是维度的数量,因此在我的情况下为3)。另外,我不确定如何处理此函数的输出 - 它与输入矩阵的大小相同。
我很欣赏任何例子。
答案 0 :(得分:1)
[K, V] = convhull(YourArray);
K
是与凸包上的点对应的点的索引,V
只是该凸包所跨越的体积。因此,您可以使用此行索引在YourArray
中找回您的点。
使用以下示例:
YourArray= rand(1e3,3);
[K, V] = convhull(YourArray);
K
给了我一个140x3 'double'
,其中包含我的点数和V=0.9291
的指数,这是我的凸包所覆盖的音量。只需调用
YourArray
返回凸包上的点
YourArray(K)
不出所料,更多的人一直在努力获取凸包内的点数并实际为此编写代码,请参阅约翰D' Errico的MathWorks Central代码。