資源簡介
在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
- 上一篇:k-均值k-means的Matlab靜態實現
- 下一篇:一個非常經典的KPCA程序
評論
共有 條評論