在MATLAB中查找图形中的连通组件

时间:2010-12-31 01:32:54

标签: matlab cluster-analysis

我有很多3D数据点,我希望在此图中找到“连接组件”。这是形成具有以下属性的集群的地方​​:

  • 每个群集都包含所有与群集中另一个点最远距离的点。
  • 两个不同群集中的所有点至少相距一段距离。

问题和答案here中描述了此问题。

是否有内置或可在FEX上使用的此类算法的MATLAB实现?简单的搜索没有抛出任何有用的东西。

3 个答案:

答案 0 :(得分:1)

在这种情况下,也许可以应用基于密度的聚类算法。有关question算法的说明,请参阅此相关DBscan

答案 1 :(得分:0)

我不认为在所有情况下都可以满足这两个条件。

如果您决定专注于第一个条件,则可以使用Complete-Linkage层次聚类,其中根据任意两点之间的最大距离合并点或点组。在Matlab中,这是在CLUSTERDATA中实现的(请参阅各个功能步骤的帮助)。

要计算您的群集索引,您需要运行

clusterIndex = clusterdata(coordiantes,maxDistance,'criterion','distance','linkage','complete','distance','euclidean')

如果您想要简单地消除小于minDistance的不同群集的点,您可以在群集之间运行pdist来清理连接的组件。

答案 2 :(得分:0)

在这种情况下,

k-means或k-medoid算法可能很有用。