MATLAB: Matlab delete values

deletevector

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..

Best Answer

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) = [];