资源简介

最大最小距离算法matlab代码,博客地址:http://blog.csdn.net/guyuealian/article/details/53708042

资源截图

代码片段和文件信息

%%%%%%%%%%%%%%%%%
%函数名称 MaxMinDisFun(xTheta)
%输入参数:
%           x   : x为n*m的特征样本矩阵,每行为一个样本,每列为样本的特征
%         Theta:即θ,可用试探法取一固定分数,如:1/2
%输出参数:
%           pattern:输出聚类分析后的样本类别
%函数功能 :利用最大最小距离算法聚类样本数据,
%
%%%%%%%%%%%%%%%%%%%%%
function [pattern]=MaxMinDisFun(xTheta)
maxDistance=0;
index=1;%相当于指针指示新中心点的位置
k=1;      %中心点计数,也即是类别
center=zeros(size(x));    %保存中心点
patternNum=size(x1);  %输入的数据数(样本数)
%distance=zeros(patternNum3);%distance每列表示所有样本到每个聚类中心的距离
minDistance=zeros(patternNum1);%取较小距离
pattern=(patternNum);%表示类别

center(1:)=x(1:);%第一个聚类中心
pattern(1)=1;

for i=2:patternNum
    distance(i1)=sqrt((x(i:)-center(1:))*(x(i:)-center(1:))‘);%欧氏距离,与第1个聚类中心的距离
    minDistance(i1)=distance(i1);
    pattern(i)=1;%第一类
    if(maxDistance        maxDistance=distance(i1);%与第一个聚类中心的最大距离
        index=i;%与第一个聚类中心距离最大的样本
    end
end

k=k+1;
center(k:)=x(index:);%把与第一个聚类中心距离最大的样本作为第二 个聚类中心
pattern(index)=2;%第二类
minDistance(index1)=0;

while 1
    for i=2:patternNum 
        if(minDistance(i1)~=0)
            distance(ik)=sqrt((x(i:)-center(k:))*(x(i:)-center(k:))‘);%与第k个聚类中心的距离
           if(minDistance(i1)>distance(ik))
               minDistance(i1)=distance(ik);
               pattern(i)=k;
           end
        end
    end
    max=0;
    for i=2:patternNum
        if((max            max=minDistance(i1);
            index=i;
        end
    end
    if(max>(maxDistance*Theta))
        k=k+1;
        center(k:)=x(index:);
        pattern(index)=k;
        minDistance(index1)=0;
    else
           break;
    end
end  
        
        
        
        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1995  2016-12-17 17:04  最大最小距离算法matlab代码\MaxMinDisFun.m
     文件         110  2016-12-17 15:18  最大最小距离算法matlab代码\test.m
     目录           0  2016-12-17 17:09  最大最小距离算法matlab代码\

评论

共有 条评论