% MAXDISS maximize dissimilarity % [Y] = maxdiss(X,m) % X : n x p data matrix % m : size of subset % Y : X, reorderred, according to dissimilarity % Heuristic algorithm for ranking dissimilarity among % a set of vectors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [Y] = maxdiss(X,m) n = size(X,1); p = size(X,2); Y = zeros(m,p); % Fill up Y for j = 1:m % Choose most dissimilar vector; if this is the first vector, % pick a random one if j == 1 i = ceil(rand*n); else % Calculate dissimilarity score for remaining X's % with respect to already-picked Y's D = zeros(size(X,1),1); % Iterate over all remaining X's for l = 1:size(X,1) l_sum = 0; % Iterate over all selected Y's for k = 1:j l_sum = l_sum + sum((Y(k,:)-X(l,:))'.^2); end D(l) = l_sum; end [D,i] = max(D); end % Add new vector to Y Y(j,:) = X(i,:); % Remove vector from X X(i,:) = []; end