資源簡介
本資源通過matlab編寫的動態模糊聚類算法,并且包含形成模糊矩陣的不同方法,最后形成直觀的動態聚類圖,結果十分直觀,對理解模糊算法及動態聚類有相當大的幫助。

代碼片段和文件信息
function?FCAnalysis(R)%%定義函數
%%模糊聚類分析動態聚類
%%R模糊相似矩陣
[mn]=size(R);%%獲得矩陣的行列數
if(m~=n|m==0)
????return;
end
for(i=1:n)
????R(ii)=1;%%修正錯誤
????for(j=i+1:n)
????????if(R(ij)<0)
????????????R(ij)=0;
????????elseif?(R(ij)>1)
????????????R(ij)=1;
????????end
????????R(ij)=round(10000*R(ij))/10000;%%保留4位小數
????????R(ji)=R(ij);
????end
end
js0=0;
while(1)%%求傳遞閉包
????R1=FCMaxMin(RR);
????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(ij)==lmd(x))
??????????pd=0;
??????????break;
??????end
??end
??if(pd)
??????k=k+1;
??????lmd(k)=R(ij);
??end
end
end
for(i=1:k-1)
????for(j=i+1:k)
????????if(lmd(i) ????????????x=lmd(j);
????????????lmd(j)=lmd(i);
????????????lmd(i)=x;
????????end
????end
end
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(ij)>=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(ij)>=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(ij)>=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(xi)=Sz0(j);
??????????????js0=js0+Sz0(j);
??????????????break;
??????????end
??????????y=y+Sz0(j);???
????end????
??end
end
?F_dtjltx=figure(‘name‘‘動態聚類圖‘‘color‘‘w‘);
??axis(‘off‘);
??Kd=20;Gd=40;y=fl*Gd+Gd;lx=80;
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????815??2010-04-07?13:43??FCProgramm\FCDataNormalization.m
?????文件???????7405??2010-04-07?14:28??FCProgramm\FCSimilarMatrix.m
?????文件????????360??2010-04-07?13:52??FCProgramm\FCMaxMin.m
?????文件???????4309??2010-04-07?14:29??FCProgramm\FCAnalysis.m
?????文件???????1751??2010-04-07?14:26??FCProgramm\FCMain.m
?????文件???????7405??2010-04-07?14:26??FCProgramm\FCSimilarMatrix.asv
?????目錄??????????0??2010-04-07?13:33??FCProgramm
-----------?---------??----------?-----??----
????????????????22045????????????????????7
評論
共有 條評論