Home > demo3 > calcdist.m

calcdist

PURPOSE ^

input: vector of data points, single center or multiple centers

SYNOPSIS ^

function distances = calcdist(data,center)

DESCRIPTION ^

  input: vector of data points, single center or multiple centers
 output: vector of distances
 (C) Charles Elkan

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function distances = calcdist(data,center)
0002 %  input: vector of data points, single center or multiple centers
0003 % output: vector of distances
0004 % (C) Charles Elkan
0005 
0006 [n,dim] = size(data);
0007 [n2,dim2] = size(center);
0008 
0009 % Using repmat is slower than using ones(n,1)
0010 %   delta = data - repmat(center,n,1);
0011 %   delta = data - center(ones(n,1),:);
0012 % The following is fastest: not duplicating the center at all
0013 
0014 if n2 == 1
0015     distances = sum(data.^2, 2) - 2*data*center' + center*center';
0016 elseif n2 == n
0017     distances = sum( (data - center).^2 ,2);
0018 else
0019     error('bad number of centers');
0020 end
0021 
0022 % Euclidean 2-norm distance:
0023 distances = sqrt(distances);
0024 
0025 % Inf-norm distance:
0026 % distances = max(abs(distances),[],2);

Generated on Sat 22-Aug-2009 22:15:36 by m2html © 2003