I have a matrix of the form
A=[317.0000 282.0000 310.0000 259.0000 257.0000 305.0000 294.6667 282.0000
317.0000 282.0000 309.0000 372.0000 257.0000 305.0000 294.3333 319.6667
317.0000 282.0000 257.0000 305.0000 310.0000 259.0000 294.6667 282.0000
317.0000 282.0000 257.0000 305.0000 309.0000 372.0000 294.3333 319.6667
92.0000 166.0000 55.0000 235.0000 71.0000 173.0000 72.6667 191.3333
92.0000 166.0000 71.0000 173.0000 55.0000 235.0000 72.6667 191.3333];
I want to remove the redundant rows from A. Can anyone help. TIA.

 채택된 답변

Thorsten
Thorsten 2016년 8월 16일

0 개 추천

unique(sort(A,2), 'rows')

댓글 수: 2

Ananya Malik
Ananya Malik 2016년 8월 16일
Thnaks a lot @Thorsten. Works perfectly.
John Allen
John Allen 2020년 8월 14일
warning, if position in the row is important then you dont want this. ie if (1,2) is different to (2,1)

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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2016년 8월 16일

1 개 추천

uA = unique(A, 'rows', 'stable');

댓글 수: 7

Ananya Malik
Ananya Malik 2016년 8월 16일
편집: Ananya Malik 2016년 8월 16일
Does not work. It returns back exactly A.
"Does not work"
It does exactly what you asked. If it does not work that would be because no two rows are exactly identical. There may be some small differences between the values that matlab does not show by default.
You can use uniquetol instead of unique to make up for these small differences:
uA = uniquetol(A, 'ByRows', true); %use default tolerance. You can specify your own
There is no 'stable' option for uniquetol. The returned rows will be ordered.
Ananya Malik
Ananya Malik 2016년 8월 16일
편집: Walter Roberson 2016년 8월 16일
A simpler example
A = [1 2 3 45; 3 2 1 45; 1 4 5 54; 5 4 1 54];
I need the output
B= [1 2 3 45; 1 4 5 54]
Ananya Malik
Ananya Malik 2016년 8월 16일
Thanks Guillaume for your input.
Walter Roberson
Walter Roberson 2016년 8월 16일
You have a row that begins with 5, but no output row that begins with 5. You have removed too much.
John Allen
John Allen 2020년 8월 14일
the post title is misleading - you don't want to remove duplicate rows, you want to remove rows with the same contents, irrespective of order
[~, iA] = uniquetol(A, 'byrows', true);
A(sort(iA), :) %the unique rows, in the original order

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

카테고리

도움말 센터File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

제품

질문:

2016년 8월 16일

댓글:

2020년 8월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by