Matlab

时间:2017-03-23 22:02:06

标签: matlab

考虑二维平面中的一些随机放置的点。点可以在平面的不同位置制作簇。 (在每个聚类中定义聚类:,每个点至少在聚类中有一个近点,这两个点之间的距离小于某个长度(比如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在同一簇中。如何使用neigh matrix找到簇?

1 个答案:

答案 0 :(得分: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