0

I have a matrix M in MATLAB, containing m x n numbers. I want to add very small noises to repeated rows to make it unique, i.e., size(M,1) = size(unique(M,'rows'),1).

EDIT: I have tried this. But it is not deterministic.

while size(unique(allDataUnnormalized,'rows'),1)~=size(allDataUnnormalized,1)
    [~, tmpDist] = knnsearch (allDataUnnormalized,allDataUnnormalized,'k',2);
    importantIdx = find(tmpDist(:,2)==0);

    allDataUnnormalized(importantIdx,:)=allDataUnnormalized(importantIdx,:)+rand(numel(importantIdx),NDims)*epsilon^4;
end
mythealias
  • 350
  • 1
  • 9
remo
  • 880
  • 2
  • 14
  • 32

1 Answers1

1

Adding noise is cheap, why wont you just try something like:

 allDataUnnormalized = allDataUnnormalized + eps*rand(size(allDataUnnormalized));
bla
  • 25,846
  • 10
  • 70
  • 101