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

2 ビュー (過去 30 日間)
YU ZHU
YU ZHU 2017 年 11 月 15 日
コメント済み: YU ZHU 2017 年 11 月 15 日
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 Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by