How to remove rows having repeating elements from a matrix?
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Susmita
 am 25 Apr. 2016
  
    
    
    
    
    Kommentiert: David Wagener
 am 1 Dez. 2019
            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.
0 Kommentare
Akzeptierte Antwort
  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
      
 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
  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.
Siehe auch
Kategorien
				Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!