function [C,V,L]=optkmeansr(pattern,centers,var,learn_rate,alpha) %OPTKMEANSR Recursive version of the optimal adaptive k-means clustering algorithm % % [C,V,L]=OPTKMEANSR(pattern,centers,var,learn_rate,alpha) % % C - New centers computed % V - Variations in each cluster % L - New learning rate computed % % pattern - Input pattern present in one iteration % centers - Centers computed in previous iteration % var - Cluster variations in previous iteration % learn_rate - Learning rate in previous iteration % alpha - Parameter (very close to 1.0 ; default is 0.9999) % % Computes new values for the centers and cluster variation, associated with % each cluster, given the previous iteration values and a new input pattern. % % References: % % Chinrungrueng, C., and C.H. Séquin (1995). % "Optimal Adaptive k-means Algorithm With Dynamic Adjustment of Learning Rate" % IEEE Transactions on Neural Networks, vol.6, Nº 1, pp. 157-169 % % 04/06/1999 ; Pedro Frazão Ferreira % if (nargin<4) | (nargin>5), error('Wrong number of input arguments. Try "help optkmeansr".'); end if nargin==4, alpha=0.9999; end dim=size(centers); C=centers; V=var; for i=1:dim(1), pattern(i,:)=pattern(1,:); end distances=sum(abs(pattern-centers).^2,2); wdistances=var.*distances; mship=find(wdistances==min(wdistances)); C(mship,:)=centers(mship,:)+(learn_rate*(pattern(mship,:)-centers(mship,:))); V(mship)=(alpha*var(mship))+((1-alpha)*distances(mship)); vknorm=V/sum(V); L=1-(sum(-vknorm.*log(vknorm))/log(dim(1)));