2 function centers =
kmeans_v1(initPosArray, symbVector, varargin)
5 if size(initPosArray,2) == 1
6 initPosArray = initPosArray.
'; 9 if size(symbVector,2) == 1 10 symbVector = symbVector.';
14 iterations = 10; % Max. number of iterations
15 tol = 2e-3; % Convergence tolerance
16 gamma = 0.5; % Adaptation step
18 % configure optional variables:
20 for argidx = 1:2:nargin-2
21 switch varargin{argidx}
23 gamma = varargin{argidx+1};
25 iterations = varargin{argidx+1};
27 tol = varargin{argidx+1};
32 K_Centers = initPosArray;
33 deltaK = initPosArray;
35 d = nan(length(K_Centers), length(symbVector)); % Alocate matrix of data-centers distance.
40 for ii = 1:length(K_Centers) % Calculate distances from all datapoints to each center
41 d(ii,:) = abs(K_Centers(ii)-symbVector);
45 for ii = 1:length(K_Centers)
46 deltaK(ii) = gamma*(K_Centers(ii)-mean(symbVector(ind == ii))); % Incremental position values of each center
47 K_Centers(ii) = K_Centers(ii) - deltaK(ii); % Update center positions
50 if sum(abs(deltaK))/length(K_Centers) < tol % Convergence test (if average position increment is less than 2e-3, stop iterations)
function kmeans_v1(in initPosArray, in symbVector, in varargin)
This function applies the k-means algorithm to find the centers of complex-valued data clusters...