remove duplicated rows from a cell array ?
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (2 件)
dpb
2017 年 5 月 21 日
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 件のコメント
Andrei Bobrov
2017 年 5 月 21 日
編集済み: Andrei Bobrov
2017 年 5 月 21 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!