【发布时间】:2017-08-16 16:52:06
【问题描述】:
考虑一些在二维平面中随机放置的点。点可以在平面的不同位置形成簇。 (定义一个簇:在每个簇中,每个点在簇中至少有一个近点,这两个点之间的距离小于一定的长度(比如R)。) 一个很好的问题是,是否可以通过点的位置来找到簇的数量和大小?任何人都可以在 Matlab 中提供答案吗? 非常感谢任何代码支持的答案。
目前还没有答案,所以我尽量让问题更清楚。 我可以找到一个矩阵,显示哪两个粒子的距离小于 R:
n=10; %number of points
R=2;
x=rand(1,n).*5; %position of points
y=rand(1,n).*5;
neigh=[];
for number = 1:n;
distance(1:n) = (ones(1,n).*x(number)-x).^2 + (ones(1,n).*y(number)-y).^2;
neighbour_s = distance < R^2;
neigh= [neigh;neighbour_s];
end
如果近邻矩阵的元素(n,m)等于1,则粒子n和m是连通的。所以他们在同一个集群中。如果粒子 m 连接到粒子 k,则粒子 m,n 和 k 在同一个簇中。如何使用邻域矩阵找到聚类?
【问题讨论】:
-
你试过kmeans或clusterdata函数吗?
-
不,因为它没有给出集群的数量@Ozcan
-
你尝试过parzen窗口密度估计吗?
-
没有。它是如何工作的? @Ozcan
-
你能给我一个代码支持的答案吗?我无法理解 k-means 和 clusterdata 的 matlab 帮助? @Ozcan
标签: matlab