为什么一天convexhulln给矩阵作为输出,而不是向量包含指数的输入?

3视图(30天)
这个查询的方法是区别的observation-cum-question convexhull()和convexhulln为二维数据()。
我需要创建一天convexhulls不同的多维数据集。一些数据集2 d和3 d的我可以使用convexhull ()。然而,对于一致性,我打算用一天convexhulln为所有的数据集()。我不明白为什么有不同的结果,当我用convexhulln()在一个二维的数据集,比当我使用convexhull()相同的数据集。特别是,convexhulln返回的输出()是一个二维矩阵的输入向量代表的指数是船体的一部分(这是我正确地得到当我使用convexhull ())。我相信两个函数的结果在一个给定的二维数据集是相同的船体的体积是一样的。看来,输出的两列表示相同的指标的输入。然而,对于策划的船体使用列输出,需要添加的第一个索引列在最后,完成循环,确保策划船体。
请帮助我了解convexhulln的输出()。下面的例子是共享:
data = [0.1961, 0.4923;0.5743、0.8096;0.4609、0.7475;0.8313、0.0551;0.0931、0.9383;0.7146、0.2557;0.3128、0.1930;
0.9420、0.5007;0.1413、0.6108;0.5200、0.1762;0.3902、0.3633;0.7611、0.9229;0.0068、0.0720;0.6288、0.6374;
0.2736、0.8250;0.9033、0.3846;0.2247、0.7720;0.5965、0.4565;0.4933、0.0195;0.8730、0.7099);
%使用convhull
[hullindx,卷]= convhull(数据);
图(1);
情节(数据(:1),数据(:,2),‘*’);
持有;
情节(数据(hullindx, 1),数据(hullindx, 2));
%使用convhulln
[hullindxn, voln] = convhulln(数据);% hullindxn是一个矩阵,而不是一个向量。这说明什么呢?
图(2);
情节(数据(:1),数据(:,2),‘*’);
持有;
app_hullindxn = [hullindxn (: 1); hullindxn (1,1)];
情节(数据(app_hullindxn, 1),数据(app_hullindxn, 2));

接受的答案

约翰D 'Errico
约翰D 'Errico 2021年7月29日
编辑:约翰D 'Errico 2021年7月29日
一个二维的数据集的凸包将一个简单多边形。凸包的代码返回的集合点在多边形。
例如:
XY = randn (5,2);
polynodes = convhull (XY (: 1), XY (:, 2))
polynodes = 6×1
1 2 3 4 5 1
所以有5点的凸包。你可以在多边形的遍历序列。
然而,在更高的维度,你不能简单地遍历一个多边形。在3 d或更高版本中,我们会有一个多面体。所以在3 d,三角面组成。,它只是将毫无意义,试图把它写成一个简单的分段线性路径。
所以看convhulln的输出,在相同的数据。
边缘= convhulln (XY)
边缘= 5×2
3 4 5 1 1 2 2 3 4 5
我们现在看到的列表5边缘。每一行的结果是一个优势。如果你仔细观察这些边缘,我们可以从节点1到2,3,4,5,然后回到节点1,序列。
然而,convechull将在更多的方面组成的维度。
在3 d会发生什么呢?在这里,他们将一个三角形列表。
XYZ =兰德(10,3);
convhull (XYZ (: 1), XYZ (:, 2), XYZ (:, 3))
ans = 16×3
1 2 6 1 6 9 1 9 2 2 3 4 2 4 2 5 6 2 8 9 10 2 3 3 7 4 3 7
现在convhull不能返回一个简单的多边形。多边形路径将meningless在这种背景下,由于多边形路径不能描述一个物体的表面3 d或一天更高的维度。相反,它将返回相同的结果作为convhulln,虽然面不需要列出的顺序相同。他们甚至不必在同一方向。
convhulln(某某)
ans = 16×3
5 2 6 7 5 6 2 1 6 1 9 6 9 1 2 10 2 3 10 9 9 8 6 8 7 6 10 8 9
这里我看到方面(1 6 9)上市,但似乎在后者方面[1 9 6]。
最后注意的是,convhull写convhulln前几年,我记得。所以convhull生产的使用一个简单多边形经常被用于遗留代码。向后兼容性,他们肯定convhull独自留下,然后添加convhulln代码。convhulln完全一致在它返回一个输出2个或更多的维度。
无论如何,如果你想要的是一个一致的输出,然后总是使用convhulln。我无法看到任何问题。(就我个人而言,我有时使用这些代码,因为有时候,我想看看样式输出路径convhull产生2 - d)。

更多的答案(0)

类别

找到更多的在边界地区帮助中心文件交换

s manbetx 845


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!