Borrar filtros
Borrar filtros

Matlab delete values

3 visualizaciones (últimos 30 días)
athpapa -
athpapa - el 8 de Mzo. de 2011
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 comentario
Walter Roberson
Walter Roberson el 8 de Mzo. de 2011
Note: to sort in descending order, you need
[C, Index] = sort(A,'descend');

Iniciar sesión para comentar.

Respuesta aceptada

Matt Tearle
Matt Tearle el 8 de Mzo. de 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) = [];
  1 comentario
athpapa -
athpapa - el 8 de Mzo. de 2011
thank you!!

Iniciar sesión para comentar.

Más respuestas (1)

Matt Fig
Matt Fig el 8 de Mzo. de 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.
  1 comentario
athpapa -
athpapa - el 8 de Mzo. de 2011
thank you!!

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by