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

2 次查看(过去 30 天)
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.

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-11-15
编辑:Andrei Bobrov 2017-11-15
[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 个评论
YU ZHU
YU ZHU 2017-11-15
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.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by