remove duplicated rows from a cell array ?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
dpb
le 21 Mai 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 commentaires
Andrei Bobrov
le 21 Mai 2017
Modifié(e) : Andrei Bobrov
le 21 Mai 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 commentaires
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!