下面的脚本根据图像的质心标记图像中的对象。我如何在所有形心坐标组合之间预成两两的距离(不重叠)并将结果返回到表中?我当时在考虑使用pdist2,但我不知道如何构造for循环。
谢谢。
脚本:
UPDATE products
SET discount = 25
WHERE category_id IN (1,4,5,6 etc..);
答案 0 :(得分:2)
使用squareform
而不是使用EXC_BAD_ACCESS
来查找两个列表中点之间的距离。 pdist2
将所有点集中在一个列表中,并找出每对之间的距离。
在您的示例中,pdist
给出了逗号分隔的点列表,因此我们需要使用{{3}}将其强制为点数组:
s.Centroid
现在我们可以将此列表提供给point_list = vertcat(s.Centroid);
:
pdist
dist_list = pdist(point_list);
返回从质心pdist
到质心i
的距离列表,使得j
:
i < j
在您的示例中,有28个质心,这将使您总共有378个距离。
如果要以矩阵形式而不是元素{1->2}, {1->3}, {1->4}, ... {1->n}, {2->3}, {2->4}, ..., {2->n}, {3->4}, etc.
是从质心(i,j)
到质心i
的距离,则可以使用{{3}}:
j
对于28个质心,这将为您提供完整的28x28距离矩阵。