www.pudn.com > colorseg.zip > kclassify.m, change:2003-03-10,size:1086b


function groups = kclassify(samples, means)

% KCLASSIFY Classification based on k-means (no dependence on dimension)
%
%  Samples: A matrix with rows containing sample vectors
%  Means: A matrix with C rows, each of which is a group mean.
  
% First, compute the distances of each sample from each of the
% means.
  
  numPixels = length(samples(:,1));
  numGroups = size(means,1);
  groups = zeros(numPixels,1);
  
  tic
  for i=1:numPixels
      
      % #1
      %[jive, groups(i)] = min(distances(samples(i,:), means));
      
      % #2  11s for K=1000
      vm = repmat(samples(i,:), numGroups, 1);     
      dists = sum((vm - means).^2, 2);

      % #3
      %dists = zeros(numGroups,1);
      %for j=1:numGroups
      %    dists(j) = sum((samples(i,:)-means(j,:)).^2);
      %end

      % #4  
%       str='dists=[ ';
%       for j=1:length(means(:,1))
%           str = strcat(str,sprintf('sum((samples(%d,:)-means(%d,:)).^2), ',i,j));
%       end
%       str = strcat(str,'];');
%       eval(str);
      
      [dontcare, groups(i)] = min(dists);
      
  end
  toc