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

资源简介

在Matlab中实现层次聚类算法的Chameleon算法,也称变色龙算法。代码简洁,运行正常。

资源截图

代码片段和文件信息

clear; 
clc; 
 
%产生随机点 
img=zeros(100200); 
data=rand(1100); 
x=zeros(1100); 
y=zeros(1100); 
for i=1:100 
    loc=ceil(data(1i)*20000); %x为一个包含小数点的数组ceil(x)就是把x中所有小数点后面的去掉 整数位上加1
    x(1i)=ceil(loc/200); 
    y(1i)=mod(loc200); 
    if (y(1i)==0) 
        y(1i)=200; 
    end 
    img(x(1i)y(1i))=255; 
end 
%image(img); 
 
%构造距离矩阵 
processed=1000000; 
for i=1:100 
    for j=i+1:100 
       dist(ij)=(x(1i)-x(1j))*(x(1i)-x(1j))+(y(1i)-y(1j))*(y(1i)-y(1j)); 
       dist(ji)=processed; 
   end 
   dist(ii)=processed; 
end 
 
for i=1:100 
    category(1i)=i; 
end 
num_category=100; 
%反复挑选距离最近的两类合并 
while (num_category>7) 
    mindist=1000000; 
 
    for i=1:100 
        for j=i+1:100 
            if (dist(ij)                mindist=dist(ij); 
                minp1=i; 
                minp2=j; 
            end 
        end 
    end 
    dist(minp1minp2)=processed; 
    dist(minp2minp1)=processed; 
    for i=1:100 
        if (category(1i) == minp2) 
            category(1i)=minp1; 
        end 
    end 
    for i=1:100 
        if (dist(minp2i)            dist(minp1i)=dist(minp2i); 
        end 
        dist(minp2i)=processed; 
        dist(iminp2)=processed; 
    end 
    num_category=num_category-1; 
end

评论

共有 条评论