Delete double cell array entries

How can I delete double entries in a cell array? I don't want to use a loop. For example I have:
CellArray={[1 2 3] [1 2] [3 5 6 7] [1 2] [2 4] }
And as a result I want to get this:
NewCellArray={[1 2 3] [1 2] [3 5 6 7] [2 4] }
Thank you very much and have a nice day!

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 20 Mar 2013
Modifié(e) : Azzi Abdelmalek le 20 Mar 2013

0 votes

CellArray={[1 2 3] [1 2] [3 5 6 7] [1 2] [2 4] };
m=max(cellfun(@numel,CellArray));
v=cellfun(@(x) [x inf(1,m-numel(x))],CellArray,'un',0);
[~,ii]=unique(cell2mat(v'),'rows');
CellArray=CellArray(ii)

1 commentaire

Antje
Antje le 21 Mar 2013
This solution works really fine and fast! Time needed for my loop: 1.24 seconds Time needed with the one line solution from Friedrich below: 0.3 seconds Time needed with your solution: 0.07 seconds! :) Thanks so much!

Connectez-vous pour commenter.

Plus de réponses (2)

Friedrich
Friedrich le 20 Mar 2013

0 votes

Hi,
one line:
NewCellArray = cellfun(@str2num, unique(cellfun(@num2str, CellArray,'UniformOutput',false)),'UniformOutput',false)

1 commentaire

Antje
Antje le 21 Mar 2013
This solution works very good and I like that it is only one line. But in my case I prefer the faster solution from above. Thank you!

Connectez-vous pour commenter.

Babak
Babak le 20 Mar 2013

0 votes

CellArray={[1 2 3] [1 2] [3 5 6 7] [1 2] [2 4] };
NewCellArray = [CellArray(1:3) CellArray(5)];

2 commentaires

CellArray is just an example, I guess his array is much bigger.
Antje
Antje le 21 Mar 2013
Yes, that's the problem. My cell array can have thousands of entries.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by