Matlab delete values
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I have a table: A=[2 5 5 0] and I use this function to sort it in descend order: [C, Index] = sort(A) and the result: C=[5 5 2 0]. Then I use this: t=A(Index(1)); A(A==t)=[]; to find and delete the value of table A which match the first value of table C. But when I have same values as in my example (5, 5) it deletes them both. I want to delete only one value each time. I mean I want A=[2 5 0] and so C become: C=[5 2 0]. What is the right function? I want this function to work for random arrays and not only for the example!
Thank you..
1 commentaire
Walter Roberson
le 8 Mar 2011
Note: to sort in descending order, you need
[C, Index] = sort(A,'descend');
Réponse acceptée
Matt Tearle
le 8 Mar 2011
Much as I love logical indexing, here's a case for using find with the number and 'first' or 'last' option:
idx = find(A==t,1,'first');
A(idx) = [];
That said, it seems like you're trying to remove the maximum (or minimum) value, but only one. In which case, why not simplify a bit:
idx = find(A==max(A),1,'first');
A(idx) = [];
Or even just use the fact that max will return a single index for the maximum value:
[~,idx] = max(A);
A(idx) = [];
Plus de réponses (1)
Matt Fig
le 8 Mar 2011
A(find(A==T,1,'first')) = [];
Or, you could just use Index directly:
A(Index(1)) = []
And avoid the call to FIND and/or any comparisons.
Voir également
Catégories
En savoir plus sur Matrices and Arrays 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!