How to get a new cell array containing the repeated elements in an original cell?

1 vue (au cours des 30 derniers jours)
For example if I have an original cell as
celloriginal={'apple','bird','cat','bird','zoo','bird','cat'};
and I want to obtain a new cell which contains the elements, 'bird' and 'cat', that appear multiple times in the original cell
cellnew={'bird','cat'}
I have tried unique(celloriginal), but got no clue what to do next. Help would be really appreciated.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 15 Nov 2017
Modifié(e) : Andrei Bobrov le 15 Nov 2017
[g,val] = findgroups(celloriginal);
out = val(histcounts(g,1:max(g)+1)>1);
or
[a,~,c] = unique(celloriginal);
out = a(accumarray(c,1)>1);
  1 commentaire
YU ZHU
YU ZHU le 15 Nov 2017
Thank you! What if I only want the elements that repeat the most times. for example
celloriginal={'apple','bird','bird','cat','zoo','bird','bear','bear','bear','cat'}
and cell new contains only 'bird' and 'bear',which appears 3 times, since 'cat' only appears 2 times.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Resizing and Reshaping Matrices 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!

Translated by