- Use sort to sort the values in each row
- Use diff to get the difference between consecutive values in each row
- Use any to check if any of those differences equal zero (indicating a duplicate values)
- Use the output of the any command, which is a logical index, to delete the rows that have duplicates
how do I remove rows with duplicated values?
조회 수: 9 (최근 30일)
이전 댓글 표시
let say i have matrix A
A = [1 2 3 4 5;
3 5 7 9 11;
1 1 4 5 7;
3 5 6 6 9;
1 4 10 15 16]
and wanted to remove all rows with values that repeated with each other. Then A will become
A = [1 2 3 4 5;
3 5 7 9 11;
1 4 10 15 16]
Thanks for the help in Advance
댓글 수: 0
채택된 답변
the cyclist
2017년 3월 7일
편집: the cyclist
2017년 3월 7일
Here is a one-liner:
A(any(diff(sort(A,2),[],2)==0,2),:)=[];
If you are certain that each row is already in numerical order (as in your example), you can skip the sorting step.
The algorithm is the following:
댓글 수: 3
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!