Remove close value for matrix
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a matrix A with has dimension n x3
I want to remove the data values that are so close to certain value or repeated.
Let say A = [ 1 1 1; 1 1 1.5; 1.1 1.2 1 , so on ]
definitely they are closed and I cant use "unique" command because they are not repeated for all 3 values.
How to remove those value in certain distance: let say if the distance is less than or equal to .5, then remove that row. We can average those value that would be awesome all close value and replace it in the new matrix.
Note: A has unknown row, so it has to be a loop.
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 11 Juil 2013
Modifié(e) : Azzi Abdelmalek
le 11 Juil 2013
A = [ 1 1 1; 1 1 1.5; 1.1 1.2 1 ;2 3 4;2.1 2.9 4.5]
tol=0.5*ones(1,size(A,2));
v=(1:size(A,1));
idx=arrayfun(@(x) all(bsxfun(@le,abs(bsxfun(@minus,A,A(x,:))),tol),2),v,'un',0);
idx=cell2mat(idx);
for k=1:size(idx,1)
q=idx(:,k);
A(q,:)=repmat(mean(A(q,:)),sum(q),1);
end
out=unique(A,'rows')
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!