我想知道如何找到位于Voronoi细胞中的点的指数。
例如(简单地)
x=rand(2,6)*10
voronoi(x(1,1:3),x(2,1:3),'*')
hold on
plot(x(2,:),x(1,:),'o')这里有三个细胞,我想找出哪个细胞内的点
发布于 2016-06-27 05:25:04
Voronoi图由一组种子点定义。这导致将空间划分为单元格,每个种子点有一个单元格。在您的示例中,种子点是x中的前3个点。每个Voronoi单元包含与其种子点更接近的所有点的集合,而不是任何其他种子点。例如,要确定单元格1中的哪些点,请查找与种子点1最近的一组点。
您可以使用knnsearch()来完成这个任务。跟随你的榜样:
% Seed points
s = x(:, 1:3);
% Find enclosing Voronoi cell for each data point
idx = knnsearch(s', x', 'k', 1)
% idx(i) = Index of nearest seed point to data point i在这里,我们将x的每一列视为一个数据点。第一行是x坐标,第二行是y坐标。这与调用voronoi()时使用的相同。但是,我想你是不小心(?)在调用plot()时交换x和y坐标。我们在将矩阵传递给knnsearch()时采用转置,因为它希望行对应于点,而列对应于维度。
https://stackoverflow.com/questions/38034098
复制相似问题