wolffd@0: function [B, keep] = approx_unique(A, thresh, flag) wolffd@0: % APPROX_UNIQUE Return elements of A that differ from the rest by less than thresh wolffd@0: % B = approx_unique(A, thresh) wolffd@0: % B = approx_unique(A, thresh, 'rows') wolffd@0: wolffd@0: keep = []; wolffd@0: wolffd@0: if nargin < 3 | isempty(flag) wolffd@0: A = sort(A) wolffd@0: B = A(1); wolffd@0: for i=2:length(A) wolffd@0: if ~approxeq(A(i), A(i-1), thresh) wolffd@0: B = [B A(i)]; wolffd@0: keep = [keep i]; wolffd@0: end wolffd@0: end wolffd@0: else wolffd@0: % A = sortrows(A); wolffd@0: % B = A(1,:); wolffd@0: % for i=2:size(A,1) wolffd@0: % if ~approxeq(A(i,:), A(i-1,:), thresh) wolffd@0: % B = [B; A(i,:)]; wolffd@0: % keep = [keep i]; wolffd@0: % end wolffd@0: % end wolffd@0: B = []; wolffd@0: for i=1:size(A,1) wolffd@0: duplicate = 0; wolffd@0: for j=i+1:size(A,1) wolffd@0: if approxeq(A(i,:), A(j,:), thresh) wolffd@0: duplicate = 1; wolffd@0: break; wolffd@0: end wolffd@0: end wolffd@0: if ~duplicate wolffd@0: B = [B; A(i,:)]; wolffd@0: keep = [keep i]; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: