• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-07
  • 语言: Matlab
  • 标签: 聚类  

资源简介

% 实现欧式空间聚类算法,多种子点区域增长 % 输入: % 二维或者三维点 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 < bandWidth;
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)
        

评论

共有 条评论