【问题标题】:Clustering points in two dimensional plane in MatlabMatlab中二维平面中的聚类点
【发布时间】: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


【解决方案1】:

如果您拥有统计工具箱,则可以使用 k-means 进行一些聚类,但您必须自己设置聚类数。

编辑:这是一个简单的例子。

cluster_number = 3; % Set yout cluster number
data = rand(100,2); % Set your data you want to cluster
idx = kmeans(data, cluster_number); % idx is the index array, for each sample data

【讨论】:

  • 我认为没有工具箱应该可以通过编码
  • 你能给我一个代码支持的答案吗?我无法理解 k-means 和 clusterdata 的 matlab 帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多