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]. INPUTS X - column vector of data - N vectors of dimension p (X is Nxp) radius - the bandwidth (radius of the window) rate - [optional] gradient descent proportionality factor in (0,1] maxiter - [optional] maximum number of iterations minCsize - [optional] min size for a cluster (smaller clusters get eliminated) blur - [optional] if (blur==1) then at each iteration data is blurred by the mean vector (the original data points move) - can cause 'incorrect' results OUTPUTS IDX - cluster membership [see kmeans2.m] M - cluster means [see above] DATESTAMP 29-Sep-2005 2:00pm See also MEANSHIFTIM, DEMOCLUSTER