📄 julei.txt
字号:
function gg1(x)
temp=size(x);
M=temp(1);N=temp(2);
M_bak=M;
xiao=min(x);
da=max(x);
MM=M;
u=1;
%进行数据标准化
XXX=(x-xiao(ones(MM,1),:))./(da(ones(MM,1),:)-xiao(ones(MM,1),:));
fprintf('\n标准处理后的数据=\n');
XXX
X=XXX';
XX(1,:)=1:M ;
XX(2:N+1,:)=X;
w=zeros(4,MM);
t=1;
YY=pdist(X')/sqrt(N);
SS=squareform(YY);
%输出距离系数矩阵
fprintf('\n第1次距离系数矩阵=\n');
S=SS(:, 1:MM)
while(M~=1)
for i=1:M
j=i;
S(j,j)=inf;
end
r=MM;
s=MM;
[y,a]=min(S);
[ymin,lie]=min(y) ;
for i=1:M
if (y(i)==ymin)
han=a(i);
break
end
end
%输出距离系数矩阵中最小元素所在的行和列
L=min(han,lie);
G=max(han,lie);
A=(XX(1,L)~=w(1,r));
B=(r>1);
while and(A,B)
r=r-1;
A=(XX(1,L)~=w(1,r));
B=(r>1);
end
AA=(XX(1,G)~=w(1,s));
B=(s>1);
while and(AA,B)
s=s-1;
AA=(XX(1,G)~=w(1,s));
B=(s>1);
end
E=(r==1);
F=(s==1);
C=and(A,E);
D=and(AA,F);
if and(C,D)
X(:,L)=(X(:,L)+X(:,G))/2;
w(1,u)=XX(1,L);
w(2,u)=XX(1,G);
w(3,u)=2;
w(4,u)=MM+u;
ZZ=[w(1,u),w(2,u),ymin];
Z(t,:)=ZZ;
t=t+1;
u=u+1;
elseif(D)
X(:,L)=(X(:,L)*w(3,r)+X(:,G))/(w(3,r)+1);
w(1,u)=XX(1,L);
w(2,u)=XX(1,G);
w(3,u)=w(3,r)+1;
w(4,u)=MM+u;
Z(t,:)=[w(4,r),w(2,u),ymin];
t=t+1;
u=u+1;
elseif(C)
X(:,L)=(X(:,L)+X(:,G)*w(3,s))/(w(3,s)+1);
w(1,u)=XX(1,L);
w(2,u)=XX(1,G);
w(3,u)=w(3,s)+1;
w(4,u)=MM+u;
ZZ=[w(1,u),w(4,s),ymin];
Z(t,:)=ZZ;
t=t+1;
u=u+1;
else
w(1,u)=XX(1,L);
w(2,u)=XX(1,G);
w(3,u)=w(3,r)+w(3,s);
w(4,u)=MM+u;
X(:,L)=(X(:,L)*w(3,r)+X(:,G)*w(3,s))/(w(3,r)+w(3,s));
Z(t,:)=[w(4,r),w(4,s),ymin];
t=t+1;
u=u+1;
end
for q=G:M-1
X(:,q)=X(:,q+1);
XX(:,q)=XX(:,q+1);
end
X(:,M)=0;
M=M-1;
if(M~=1)
X=X(:,1:M);
YY=pdist(X')/sqrt(N);
SS=squareform(YY);
%输出每次聚类以后的距离系数矩阵
fprintf('\n第%d次距离系数矩阵=\n',M_bak-M+1);
S=SS(:, 1:M)
end
end
%画冰状图
[Zinfo,b] = dendrogram(Z);
result = Z;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -