필터 지우기
필터 지우기

How to remove rows having repeating elements from a matrix?

조회 수: 1 (최근 30일)
Susmita
Susmita 2016년 4월 25일
댓글: David Wagener 2019년 12월 1일
If I have a matrix A=[ 1 2 1 4; 1 2 3 4; 3 2 1 4; 3 3 2 1] then I want a matrix as B=[ 1 2 3 4; 3 2 1 4] so that both the 1st and 4th row will be deleted as they have repeated elements. pls help me to find out the code.

채택된 답변

Roger Stafford
Roger Stafford 2016년 4월 25일
편집: Roger Stafford 2016년 4월 27일
t = false(1,size(A,1));
for k = 1:size(A,1)
u = unique(A(k,:));
t(k) = size(u,2)==size(A,2);
end
B = A(t,:); % Rows with repeated elements deleted

추가 답변 (1개)

Baltam
Baltam 2016년 4월 25일
The below method is not elegant but it works.
A=[ 1 2 1 4; 1 2 3 4; 3 2 1 4; 3 3 2 1];
index = zeros(1,size(A,1));
for i = 1:size(A,1)
if numel(unique(A(i,:))) == numel(A(i,:))
index(i)=1;
end
end
index = logical(index);
B = A(index,:);
Kind regards,
Baltam
  댓글 수: 2
Susmita
Susmita 2016년 4월 27일
This code is also running correctly..thanks@Baltam
David Wagener
David Wagener 2019년 12월 1일
The second version shown here while not as elegant works better if you have a large matrix and are using parallel processing. I'm not an expert by any means but the second version did not overload my machine like the first one did.

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

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by