my_clustering.m

来自「我自己编写的分层聚类算法」· M 代码 · 共 51 行

M
51
字号
w=[2 2 2 3 0 -2 -1 1 3;0 2 4 3 3 2 -1 -2 -1];
%lable of the cluster
cluster=[1 2 3 4 5 6 7 8 9];

%initialize distance matrix
D=zeros(9,9);
for i=1:9
  for j=1:9
     D(i,j)=(w(1,i)-w(1,j))^2+(w(2,i)-w(2,j))^2;
 end
end

  for i=1:8
    dmin=inf;
    %search for minimum distance
    for j=1:9
      for k=j+1:9
          if D(j,k)<dmin&D(j,k)>0
              dmin=D(j,k);
            if j<k
              elem1=j;
              elem2=k;
            else
              elem1=k;
              elem2=j;
            end
          end
      end
  end
  
  %clustering ,and adjust distance matrix&cluster array
  temp=cluster(1,elem2);
  for m=1:9
       if cluster(1,m)==temp
           cluster(1,m)=cluster(1,elem1);
       end
   end
   %output
   cluster(1,:)
   %adjust distance matrix,take the maximal value 
   for n=1:9
       if D(n,elem1)<D(n,elem2)&D(n,elem1)>0
           D(n,elem1)=D(n,elem2);
       end
   end
    D(elem1,:)=D(:,elem1)';
    %set to -1 for redundant element 
    D(:,elem2)=[-1 -1 -1 -1 -1 -1 -1 -1 -1]';
    D(elem2,:)=[-1 -1 -1 -1 -1 -1 -1 -1 -1];
end
        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?