kmean.m

来自「径向基神经网络程序加上应用」· M 代码 · 共 59 行

M
59
字号
function [gau,center,variance]= kmean(x,group,dataNum)

center = randperm(50);
center = center(1:group);
center = x(center);
sumtimes = zeros(1,group);
sumA = zeros(1,group);
variance = zeros(1,group);

[dnum dnum] = size(x);

oldbelong = 100*ones(1,dnum);

for k = 1: 100000
    minv = 1000000;
    
    for i=1:dnum     
        for j=1:group
            %assign group
            if (x(i)-center(j)).^2 <minv          
                minv = (x(i)-center(j))^2;
                belong(i) = j;
            end 
        end
        
        sumA(belong(i)) = sumA(belong(i))+x(i);
        sumtimes(belong(i)) = sumtimes(belong(i))+1;
        variance(belong(i)) = variance(belong(i))+minv;
        minv = 1000000;
    end
    
    if abs(sum((belong - oldbelong)))==0;
        disp 'completed!'
        %variance = variance ./ sumtimes;
        
        % get the average variance. 
        %variance = mean(variance);
        
        xx = [0:0.001:1];
               
        for i=1:group
        %    gau(i,:) = exp(-1*(x-center(i)).^2/(2*variance(i)));
        %    gauu(i,:) = exp(-1*(xx-center(i)).^2/(2*variance(i)));
        end
        %gau(group+1,:) = ones(1,50);
        
        %figure
        %plot(xx,gauu);
        break;
    end
    
    % calculate new center
    center = sumA ./ sumtimes;
    sumA = zeros(1,group);
    sumtimes = zeros(1,group);
    variance = zeros(1,group);
    oldbelong = belong;
    
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?