meanShift clustering algorithm. Based on code from Sameer Agarwal <sagarwal-at-cs.ucsd.edu>. For a broad discussion see: Y. Cheng, Mean-shift, mode seeking, and clustering, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.17, 1995, pp. 790-799 The radius or bandwidth is tied to the 'width' of the distribution and is data dependent. Note that the data should be normalized first so that all the dimensions have the same bandwidth. The rate determines how large the gradient decent steps are. The smaller the rate, the more iterations are needed for convergence, but the more likely minima are not overshot. A reasonable value for the rate is .2. Low value of the rate may require an increase in maxIter. Increase maxIter until convergence occurs regularly for a given data set (versus the algorithm being cut off at maxIter). Note the cluster means M do not refer to the actual mean of the points that belong to the same cluster, but rather the values to which the meanShift algorithm converged for each given point (recall that cluster membership is based on the mean converging to the same value from different points). Hence M is not the same as C, the centroid of the points [see kmeans2 for a definition of C]. USAGE [IDX,M] = meanShift(X, radius, [rate], [maxIter], [minCsize], [blur] ) INPUTS X - column vector of data - N vectors of dim p (X is Nxp) radius - the bandwidth (radius of the window) rate - [] gradient descent proportionality factor in (0,1] maxIter - [] maximum number of iterations minCsize - [] min cluster size (smaller clusters get eliminated) blur - [] if blur then at each iter data is 'blurred', ie the original data points move (can cause 'incorrect' results) OUTPUTS IDX - cluster membership [see kmeans2.m] M - cluster means [see above] EXAMPLE See also MEANSHIFTIM, DEMOCLUSTER Piotr's Computer Vision Matlab Toolbox Version 2.0 Copyright 2014 Piotr Dollar. [pdollar-at-gmail.com] Licensed under the Simplified BSD License [see external/bsd.txt]