模糊動態聚類分析

2022-10-11 06:15:06 字數 8241 閱讀 1620

定義函式

%模糊統計,m0劃分區間個數

[n,m]=size(a);%獲得矩陣的行列數

amin=a(1,1);%a的最小值

amax=a(1,2);%a的最大值

for(i=1:n)

if(a(i,1)>a(i,2))x=a(i,2);a(i,2)=a(i,1);a(i,1)=x;end%a的最小值

if(a(i,1)if(a(i,2)>amax)amax=a(i,2);end%a的最大值

endx=amin:(amax-amin)/m0:amax;

ax=;

for(k=1:m0+1)ax(k)=0;

for(i=1:n)if(x(k)>=a(i,1)&x(k)<=a(i,2))ax(k)=ax(k)+1;end; end

ax(k)=ax(k)/n;

endbar(ax);%模糊統計直方圖,或用plot(x,ax)畫折線圖

%模糊矩陣的合成運算,先取大,後取小

[m,s]=size(a);[s1,n]=size(b);c=;

if(s1~=s)return;end

for(i=1:m)for(j=1:n)c(i,j)=0;

for(k=1:s)x=0;

if(a(i,k)else x=b(k,j);end

if (c(i,j)end

end;end

%模糊聚類分析資料標準化變換

%x原始資料矩陣;cs=0,不變換;cs=1,標準差變換;cs=2,極差變換

if(cs==0)return;end

[n,m]=size(x);%獲得矩陣的行列數

if(cs==1)%平移標準差變換

for(k=1:m)xk=0;

for(i=1:n)xk=xk+x(i,k);end

xk=xk/n;sk=0;

for(i=1:n)sk=sk+(x(i,k)-xk)^2;end

sk=sqrt(sk/n);

for(i=1:n)x(i,k)=(x(i,k)-xk)/sk;end

endelse%平移極差變換

for(k=1:m)xmin=x(1,k);xmax=x(1,k);

for(i=1:n)

if(xmin>x(i,k))xmin=x(i,k);end

if(xmaxend

for(i=1:n)x(i,k)=(x(i,k)-xmin)/(xmax-xmin);end

endend

%模糊聚類分析建立模糊相似矩陣

%x,資料矩陣

%cs=1,數量積法

%cs=2,夾角余弦法

%cs=3,相關係數法

%cs=4,指數相似係數法

%cs=5,最大最小值法

%cs=6,算術平均最小法

%cs=7,幾何平均最小法

%cs=8,直接歐幾里得距離法

%cs=9,直接海明距離法(絕對值減法)

%cs=10,直接切比雪夫距離法

%cs=11,倒數歐幾里得距離法

%cs=12,倒數海明距離法(絕對值倒數法)

%cs=13,倒數切比雪夫距離法

%cs=14,指數歐幾里得距離法

%cs=15,指數海明距離法(絕對值指數法)

%cs=16,指數切比雪夫距離法

[n,m]=size(x);%獲得矩陣的行列數

r=;if(cs==1)maxm=0;pd=0;%數量積法

for(i=1:n)for(j=1:n)if(j~=i)x=0;

for(k=1:m)x=x+x(i,k)*x(j,k);end

if(maxmend;end;end

if(maxm<0.000001)return;end

maxm=maxm+1;

for(i=1:n)for(j=1:n)

if(i==j)r(i,j)=1;

else 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)/maxm;

if(r(i,j)<0)pd=1;end

endend;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

elseif(cs==3)%相關係數法

for(i=1:n)for(j=1:n)xi=0;xj=0;

for(k=1:m)xi=xi+x(i,k);xj=xj+x(j,k);end

xi=xi/m;xj=xj/m;xis=0;xjs=0;

for(k=1:m)xis=xis+(x(i,k)-xi)^2;xjs=xjs+(x (j,k)-xj)^2;end

s=sqrt(xis*xjs);r(i,j)=0;

for(k=1:m)r(i,j)=r(i,j)+abs((x(i,k)-xi)*(x (j,k)-xj));end

r(i,j)=r(i,j)/s;

end;end

elseif(cs==4)%指數相似係數法

for(i=1:n)for(j=1:n)r(i,j)=0;

for(k=1:m)xk=0;

for(z=1:n)xk=xk+x(z,k);end

xk=xk/n;sk=0;

for(z=1:n)sk=sk+(x(z,k)-xk)^2;end

sk=sk/n;r(i,j)=r(i,j)+exp(-0.75*((x(i,k)-x(j, k))/sk)^2);

endr(i,j)=r(i,j)/m;

end;end

elseif(cs<=7)%最大最小值法算術平均最小法幾何平均最小法

for(i=1:n)for(j=1:n)fz=0;fm=0;

for(k=1:m)

if(x(j,k)<0)r=;return;end

if(x(j,k)else x=x(j,k);end

fz=fz+x;

endif(cs==5)%最大最小值法

for(k=1:m)if(x(i,k)>x(j,k))x=x(j,k);else x=x(j,k); end;end

fm=fm+x;

elseif(js==6)for(k=1:m)fm=fm+(x(i,k)+x(j,k))/2;end%算術平均最小法

else for(k=1:m)fm=fm+sqrt(x(i,k)*x(j,k));end;end%幾何平均最小法

r(i,j)=fz/fm;

end;end

elseif(cs<=10)c=0;%直接距離法

for(i=1:n)for(j=i+1:n)d=0;

if(cs==8)for(k=1:m)d=d+(x(i,k)-x(j,k))^2;end

d=sqrt(d);%歐幾里得距離

elseif(cs==9)for(k=1:m)d=d+abs(x(i,k)-x(j,k));end%海明距離

else for(k=1:m)if(dif(cend;end

c=1/(1+c);

for(i=1:n)for(j=1:n)d=0;

if(cs==8)for(k=1:m)d=d+(x(i,k)-x(j,k))^2;end

d=sqrt(d);%歐幾里得距離

elseif(cs==9)for(k=1:m)d=d+abs(x(i,k)-x(j,k));end%海明距離

else for(k=1:m)if(dr(i,j)=1-c*d;

end;end

elseif(cs<=13)minm=inf;%倒數距離法

for(i=1:n)for(j=i+1:n)d=0;

if(cs==11)for(k=1:m)d=d+(x(i,k)-x(j,k))^2;end

d=sqrt(d);%歐幾里得距離

elseif(cs==12)for(k=1:m)d=d+abs(x(ji,k)-x(j,k))^2; end%海明距離

else for(k=1:m)if(dif(minm>d)minm=d;end

end;end

minm=0.9999*minm;

if(minm<0.000001)return;end

for(i=1:n)for(j=1:n)d=0;

if(j==i)r(i,j)=1;continue;end

if(cs==11)for(k=1:m)d=d+(x(i,k)-x(j,k))^2;end

d=sqrt(d);%歐幾里得距離

elseif(cs==12)for(k=1:m)d=d+abs(x(i,k)-x(j,k));end%海明距離

else for(k=1:m)if(dr(i,j)=minm/d;

end;end

else for(i=1:n)for(j=1:n)d=0;%指數距離法

if(cs==14)for(k=1:m)d=d+(x(i,k)-x(j,k))^2;end

d=sqrt(d);%歐幾里得距離

elseif(cs==15)for(k=1:m)d=d+abs(x(i,k)-x(j,k));end%海明距離

else for(k=1:m)if(dr(i,j)=exp(-d);

end;end;end

f_jldtjl(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);

endend

js0=0;

while(1)%求傳遞閉包

r1=max_min(r,r);js0=js0+1

if(r1==r)break;else r=r1;end

endlmd(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)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(i,j)>=lmd(x))js=js+1;sz(js)=j;end; end

flsz(x)=flsz(x)+1;

endend

endfor(i=1:k-1)for(j=i+1:k)if(flsz(j)==flsz(i))flsz(j)=0;end;end;

endfl=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;

endend

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

endfor(i=1:n)xhsz(i)=sz(i);end

endfor(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;

endend

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);

endend

endf_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;

endtext(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;

endelse 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

endif(j~=js0)line([linesz(js0),linesz(j)],[y,y]);endline([(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 f_jlfx(bzh,fa,x)

%模糊聚類分析

%bzh資料標準化型別;fa建立模糊相似矩陣的方法;x原始資料矩陣

x=f_jlsjbzh(bzh,x);

r=f_jlr(fa,x);

[m,n]=size(r);

if(m~=n|m==0)return;end

f_jldtjl(r);

模糊聚類分析方法作業

模糊聚類分析的原理就是運用模糊等價關係進行分類的一種分析方法。將代分事物的全體作為論域,設論域為被分類物件,每個物件又有個指標表示其性狀,即 於是,得到原始資料矩陣為 其中表示第個分類物件的第個指標的原始資料。模糊聚類分析的實質就是按照莫衷標準鑑別事物之間的接近程度,把彼此接近的事物歸為一類。模糊聚...

模糊聚類分析實驗報告

表2 13個指標值得均值和標準差 選取a13單元格輸入公式 a1 a 10 a 11,並用資料填充a13 m20區域得到標準化矩陣如下表3。表3 標準化資料矩陣 3 求取模糊相似矩陣 本次試驗是通過歐氏距離法求取模糊相似矩陣。其數學模型為 選取a23單元格輸入公式 sqrt a 13 a13 2 b...

大氣環境質量模糊聚類分析

以每年各項大氣汙染指標的實測濃度值作為指標相對隸屬度rji,隸屬函式可按照文獻 10 選取,可以寫出各汙染指標的各隸屬度函式,以so2為例寫出4個等級的隸屬函式如下 同理可以寫出nox和tsp的相對隸屬度矩陣。1.3 標準指標相對隸屬度的確定 設樣本指標i的平均相對標準為 pi pi1,pi2,pi...