我有一个显示一个凹形图形的3D数据数组。我想找到所有不属于图形的点,但是在凸包内。我该怎么做?Matlab:获得凸包的正确方法是什么
我知道我应该使用convhull
功能,但我不知道该如何输入(是大小m by n
,其中m
是点n
数量和数组的维数,所以3在我的情况)。另外,我不确定如何处理此函数的输出 - 它与输入矩阵的大小相同。
我很感激任何例子。
我有一个显示一个凹形图形的3D数据数组。我想找到所有不属于图形的点,但是在凸包内。我该怎么做?Matlab:获得凸包的正确方法是什么
我知道我应该使用convhull
功能,但我不知道该如何输入(是大小m by n
,其中m
是点n
数量和数组的维数,所以3在我的情况)。另外,我不确定如何处理此函数的输出 - 它与输入矩阵的大小相同。
我很感激任何例子。
[K, V] = convhull(YourArray);
K
是贵点相对应的点上的凸包的索引,V
只是由凸包跨区卷。因此,您可以使用此行索引查找您在YourArray
之后的点。使用
下面的例子:
YourArray= rand(1e3,3);
[K, V] = convhull(YourArray);
K
给了我一个140x3 'double'
包含我的观点和V=0.9291
的指数,体积由我的凸包跨越。您可以通过简单地调用
YourArray(K)
不出所料越来越多的人用的凸包内获得积分,并已实际写入代码,这个奋斗得到的凸包从YourArray
回点,见由John D'Errico编码的代码MathWorks Central。
根据文档,我的数组“大小为mpts-by-ndim,其中mpts是点的数量,ndim是点所在空间的维度”。那么为什么它会为一个32位乘32乘32的数组工作?我需要找到凸包内的所有点,但不在我的图形中。我该怎么做? – DailyInformation
@DailyInformation - 这可能有助于:http://stackoverflow.com/questions/33110501/reshaping-arrays-in-matlab/33110725#33110725 – rayryeng
大小[32x32x32]的数组基本上是一个均匀分布的3D网格,即32个网格指向每个方向,因此可以使用@rayryeng告诉你的方式将其重塑为Nx3阵列。 – Adriaan
等等等等,你有一个数据图可以说file1.txt的点构成一个convexhull,并让说file2.txt的点(内部或外部)的船体? – Jay