資源簡介
% 實現歐式空間聚類算法,多種子點區域增長
% 輸入:
% 二維或者三維點 Pts n*m矩陣
% 聚類使用的鄰域半徑 bandWidth
% 建立KDTREE使用的鄰域點個數 numNeighbours
% 最大迭代次數 maxIterTimes
% 輸出:
% 輸入點對應的類別號,維數為n*1,max(flag)代表聚類得到的類別數
代碼片段和文件信息
function?flag?=?EuclideanClusterExtraction(Pts?bandWidth?numNeighbours?maxIterTimes)
%?實現歐式空間聚類算法,多種子點區域增長
%?輸入:
%?????二維或者三維點???????????????Pts??????????????n*m矩陣
%?????聚類使用的鄰域半徑???????????bandWidth?????????
%?????建立KDTREE使用的鄰域點個數???numNeighbours????
%?????最大迭代次數????????????????maxIterTimes
%?輸出:
%?????輸入點對應的類別號,維數為n*1,max(flag)代表聚類得到的類別數
PtsSz?=?length(Pts);
kdtreeobj?=?KDTreeSearcher(Pts‘distance‘‘euclidean‘);
[ndis]?=?knnsearch(kdtreeobjPts‘k‘(numNeighbours+1));
n?=?n(:2:numNeighbours+1);
dis?=?dis(:2:numNeighbours+1);
radius_idx?=?dis?n?=?n.*radius_idx;
clear?radius_idx?dis?Pts;
%?生成與原始數據大小對應的標簽數組
flag?=?zeros(PtsSz1);
iter?=?1;
while(1)
????%?生成隨機種子點
????iterIdx?=?fix(PtsSz*rand(1));
????%?如果種子點等于0,則重新生成
????while(iterIdx<1)
????????
評論
共有 條評論