簡體   English   中英

Matlab中二維平面中的聚類點

[英]Clustering points in two dimensional plane in 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 矩陣找到集群?

如果您擁有統計工具箱,您可以使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM