How to remove rows having repeating elements from a matrix?

1 Ansicht (letzte 30 Tage)
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.

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 25 Apr. 2016
Bearbeitet: Roger Stafford am 27 Apr. 2016
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

Weitere Antworten (1)

Baltam
Baltam am 25 Apr. 2016
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 Kommentare
Susmita
Susmita am 27 Apr. 2016
This code is also running correctly..thanks@Baltam
David Wagener
David Wagener am 1 Dez. 2019
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.

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by