R(i,j)=R(i,j)/maxM; if(R(i,j)<0) pd=1; end end end; end if(pd)
for(i=1:n) for(j=1:n)
R(i,j)=(R(i,j)+1)/2; end; end; end
elseif(cs==2)%夹角余弦法 for(i=1:n) for(j=1:n) xi=0; xj=0;
for(k=1:m)
xi=xi+X(i,k)^2; xj=xj+X(j,k)^2; end
s=sqrt(xi*xj);R(i,j)=0; for(k=1:m)
R(i,j)=R(i,j)+X(i,k)*X(j,k); end
R(i,j)=R(i,j)/s; end; end end
(4)F_JIDtjl.m
function F_JIDtjl(R)%定义函数 %模糊聚类分析动态聚类 %R模糊相似矩阵
[m,n]=size(R);%获得矩阵的行列数 if(m~=n|m==0)
return; end
for(i=1:n)
R(i,i)=1;%修正错误 for(j=i+1:n)
if(R(i,j)<0)
R(i,j)=0; elseif(R(i,j)>1)
R(i,j)=1; end
R(i,j)=round(10000*R(i,j))/10000;%保留4位小数 R(j,i)=R(i,j); end end js0=0;
while(1)%求传递闭包
R1=Max_Min(R,R); js0=js0+1; if(R1==R)
break; else
R=R1; end end
lmd(1)=1;k=1; for(i=1:n)
for(j=i+1:n)
pd=1; %找出所有不相同的元素 for(x=1:k)
if(R(i,j)==lmd(x))
pd=0; break; end; end if(pd)
k=k+1;
lmd(k)=R(i,j); end end; end
for(i=1:k-1)for(j=i+1:k)if(lmd(i) for(x=1:k)%按lmd(x)分类,分类数为flsz(x),临时用Sz记录元素符号 js=0;flsz(x)=0; for(i=1:n)pd=1; for(y=1:js)if(Sz(y)==i)pd=0;break;end;end if(pd) for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1; end end end for(i=1:k-1)for(j=i+1:k)if(flsz(j)==flsz(i))flsz(j)=0;end;end;end fl=0;%排除相同的分类 for(i=1:k)if(flsz(i))fl=fl+1;lmd(fl)=lmd(i);end;end for(i=1:n)xhsz(i)=i;end for(x=1:fl)%获得分类情况:对分类元素进行排序 js=0;flsz(x)=0; for(i=1:n)pd=1; for(y=1:js)if(Sz(y)==i)pd=0;break;end;end if(pd)if(js==0)y=0;end for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1; Sz0(flsz(x))=js-y; end end js0=0; for(i=1:flsz(x)) for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz(j);end;end;end end for(i=1:n)xhsz(i)=Sz(i);end end for(x=1:fl)%获得分类情况:每一子类的元素个数 js=0;flsz(x)=0; for(i=1:n)pd=1; for(y=1:js)if(Sz(y)==i)pd=0;break;end;end if(pd)if(js==0)y=0;end for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1;Sz0(flsz(x))=js-y; end end js0=1; for(i=1:flsz(x))y=1; for(j=1:flsz(x)) if(Sz(y)==xhsz(js0)) flqksz(x,i)=Sz0(j);js0=js0+Sz0(j);break;end y=y+Sz0(j); end end end F_dtjltx=figure('name','动态聚类图','color','w'); axis('off'); Kd=30;Gd=40;y=fl*Gd+Gd;lx=80; text(24,y+Gd/2,'&'); for(i=1:n) text(lx-5+i*Kd-0.4*Kd*(xhsz(i)>9),y+Gd/2,int2str(xhsz(i))); line([lx+i*Kd,lx+i*Kd],[y,y-Gd]); linesz(i)=lx+i*Kd; end text(lx*1.5+i*Kd,y+Gd/2,'分数类'); y=y-Gd; for(x=1:fl) text(8,y-Gd/2,num2str(lmd(x))); js0=1;js1=0; if(x==1) for(i=1:flsz(x)) js1=flqksz(x,i)-1; if(js1) line([linesz(js0),linesz(js0+js1)],[y,y]); end line([(linesz(js0+js1)+linesz(js0))/2,(linesz(js0+js1)+linesz(js0))/2],[y,y-Gd]); linesz(i)=(linesz(js0+js1)+linesz(js0))/2; js0=js0+js1+1; end else for(i=1:flsz(x)) js1=js1+flqksz(x,i); js2=0;pd=0; for(j=1:flsz(x-1)) js2=js2+flqksz(x-1,j); if(js2==js1)pd=1;break;end end if(j~=js0)line([linesz(js0),linesz(j)],[y,y]);end line([(linesz(js0)+linesz(j))/2,(linesz(js0)+linesz(j))/2],[y,y-Gd]); linesz(i)=(linesz(js0)+linesz(j))/2; js0=j+1; end;end text(2*lx+n*Kd,y-Gd/3,int2str(flsz(x))); y=y-Gd; end (5)F_JIfx.m function F_JIfx(bzh,fa,X) %模糊聚类分析 %bzh数据标准化类型;fa建立模糊相似矩阵的方法;X原始数据矩阵 X=F_JISjBzh(bzh,X); R=F_JIR(fa,X); disp(R); [m,n]=size(R); if(m~=n|m==0) return; end F_JIDtjl(R);
相关推荐: