remove duplicated rows from a cell array ?
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi Friends, I have used this piece of code to remove duplicated pairs of rows from a cell array but it produces an error. Could anyone help me to fix it?
cell={' A',' B'; ' C',' D' ;'E','F'; ' B',' A'; ' C',' D'}
Desired_output={'A','B';'C','D';'E','F'}
I update the cell to make it more easy to understand.
0 comentarios
Respuestas (2)
  dpb
      
      
 el 21 de Mayo de 2017
        Sans the orientation (and not sure you can ensure the data are all symmetric to keep the square array?)
 >> [u,ix,ib]=unique(c);
>> [n,idx]=histc(ib,1:length(u));
>> c(ix(n==1))
ans = 
    'BRCA1'
    'ESF'
    'NBR1'
    'TTN'
>>
NB: Do NOT use 'cell' as variable name; that aliases the builtin cell function which, particularly when you're using cell array specifically could have very bad results. I just use c as a placeholder variable above instead; pick a meaningful but not conflicting name.
0 comentarios
  Andrei Bobrov
      
      
 el 21 de Mayo de 2017
        
      Editada: Andrei Bobrov
      
      
 el 21 de Mayo de 2017
  
      cell1 = {'ESF','BRCA1';'ELANE','SLPI';'NBR1','TTN';'SLPI','ELANE'};
[~,~,c]  = unique(cell1);
[~,~,c1] = unique(sort(reshape(c,size(cell1)),2),'rows');
m = max(c1);
[n,~,ii] = histcounts(c1,[1:m,m + 1]);
out = cell1(n == 1,:);
add
cell1={'A','B'; 'C',' D' ;'E','F'; 'B','A'; 'C','D'};
[~,c] = unique(cell1);
[~,b] = unique(sort(reshape(c,size(cell1)),2),'rows');
out = cell1(b,:);
3 comentarios
Ver también
Categorías
				Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

