📄 transfer.m
字号:
function transfer(X);
%此函数是用于模糊聚类分析中的传递方法来求聚类
%此函数的输入参数是模糊相似矩阵
Dimension=size(X);
n=Dimension(1);
m=Dimension(2);
%检查输入参数的有效性
if n~=m
error('输入的矩阵必须是方阵')
end
for I=1:(n-1)
for J=(I+1):n
if (X(I,J)~= X(J, I)| X(I,J)<0| X(I,J)>1)
error('输入的矩阵必须满足对称性 ,或不是模糊相似矩阵')
end
end
end
for I=1 :n
if (X( I,I)~=1)
error ('输入的矩阵必须满足自反性');
end
end
%获得模糊相似矩阵中的分类系数矩阵
numda(1)=1;
for I=1:(n-1)
for J=(I+1):n
flag=1;
for K=1:length (numda)
if X(I,J)== numda ( K)
flag=0;
break;
end
end
if flag==1
numda (length (numda)+1)=X(I,J);
end
end
end
%下面程序用于将分类系数矩阵由大到小排序
t=1;
for I=1:length (numda)
ordered_numda (t)=max(numda);
t=t+1;
index=find(numda== max(numda));
numda (index)=[ ];
end
%开始聚类
for I=1:n
A( I)=I;
end
for I=1:length (ordered_numda)
disp ('当分类系数是:');
disp (ordered_numda ( I));
aa=ordered_numda ( I);
AA=A;
disp ('聚类为');
loop1=1;
loop2=1;
while loop1
if ~isempty(AA)
xi=AA(1);
end
XX=[ ];
Q=[ ];
while loop2
for J=1:n
if (X(xi,J)>= aa)&isempty(intersect (XX, J))
XX=union(XX ,J);
Q(length (Q)+1)=J;
end
end
if isempty(Q)
disp (XX);
break;
else
xi=Q(1);
Q(1)=[ ];
end
end
AA=setdiff (AA ,XX);
if isempty(AA)
break;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -