- refactored
This commit is contained in:
Executable
+29
@@ -0,0 +1,29 @@
|
||||
% clusters.m
|
||||
% function cb = clusters(input,ref,maxIt)
|
||||
% clusters(randn(2,400)/sqrt(12),randn(2,1)/sqrt(12));
|
||||
% 17.01.2003, Jens Ahrensfeld
|
||||
|
||||
function cb = clusters(input,ref,maxIt)
|
||||
eps = 0.4;
|
||||
epse = 0.001;
|
||||
|
||||
[nDim, nData] = size(input);
|
||||
[nDimr, nDatar] = size(ref);
|
||||
|
||||
if (nDim ~= nDimr),
|
||||
error('Dimensions must match!');
|
||||
end;
|
||||
|
||||
d = zeros(nDatar,1);
|
||||
|
||||
for i=1:maxIt,
|
||||
n = round(rand(1,1)*(nData-1))+1; % Randomly pick input vector
|
||||
for k=1:nDatar,
|
||||
d(k) = sqrt(sum((input(:,n)-ref(:,k)).^2)); % Calc distances between references and input
|
||||
end;
|
||||
[min, winidx] = min(d); % Calc best reference vector - the winner
|
||||
winner = ref(:,winidx);
|
||||
epsi = eps*(1-i/maxIt)+epse;
|
||||
ref(:,winidx) = winner + epsi*(input(:,n)-winner); % Move winner towards input
|
||||
end;
|
||||
cb = ref;
|
||||
Reference in New Issue
Block a user