function y=kMeansCluster(m,k,isRand)
if nargin<3,        isRand=0;   end
if nargin<2,        k=1;        end    
[maxRow, maxCol]=size(m)
if maxRow<=k,     
     y=[m, 1:maxRow]
else  
  % initial value of centroid
    if isRand,
       p = randperm(size(m,1));      % random initialization
        for i=1:k
            c(i,:)=m(p(i),:)
       end
    else
        for i=1:k
           c(i,:)=m(i,:)        % sequential initialization
     end
    end
     temp=zeros(maxRow,1);   % initialize as zero vector
     while 1,
        d=DistMatrix(m,c);  % calculate objcets-centroid distances
        [z,g]=min(d,[],2);  % find group matrix g
        if g==temp,
            break;          % stop the iteration
        else
            temp=g;         % copy group matrix to temporary variable
        end
        for i=1:k
            f=find(g==i);
            if f            % only compute centroid if f is not empty
                c(i,:)=mean(m(find(g==i),:),1);
            end
        end
 end
     y=[m,g];
 end