필터 지우기
필터 지우기

Matlab delete values

조회 수: 3 (최근 30일)
athpapa -
athpapa - 2011년 3월 8일
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
Walter Roberson
Walter Roberson 2011년 3월 8일
Note: to sort in descending order, you need
[C, Index] = sort(A,'descend');

댓글을 달려면 로그인하십시오.

채택된 답변

Matt Tearle
Matt Tearle 2011년 3월 8일
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
athpapa -
athpapa - 2011년 3월 8일
thank you!!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt Fig
Matt Fig 2011년 3월 8일
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
athpapa -
athpapa - 2011년 3월 8일
thank you!!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by