Clear Filters
Clear Filters

Find Number of Elements in an Array

15 views (last 30 days)
Hello guys. I want to find the number of elements in a string array.
Lets say A = ['KM'; 'KL'; 'MN'; 'KM', 'MM', 'KL'] is my array list.
It should give output as;
[2,2,1,1] since my string array includes 2 KM, 2 KL, 1MN, and 1MM.
How can i do that?

Accepted Answer

Lola Davidson
Lola Davidson on 4 Jun 2024
If you prefer avoiding cell arrays and/or tables, groupcounts (introduced in R2019a) can do this straight away
A = ['KM'; 'KL'; 'MN'; 'KM'; 'MM'; 'KL'];
groupcounts(A)
ans = 4x1
2 2 1 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
That said, if you like the decoration, you can put it in a table before sending it to groupcounts.
A = ["KM"; "KL"; "MN"; "KM"; "MM"; "KL"];
groupcounts(table(A),1)
ans = 4x3 table
A GroupCount Percent ____ __________ _______ "KL" 2 33.333 "KM" 2 33.333 "MM" 1 16.667 "MN" 1 16.667

More Answers (3)

Adam Danz
Adam Danz on 19 Aug 2019
The "A" array provided in the question will result in a dimensions mismatch error. I'm assuming A is an [nx2] char array.
A = ['KM'; 'KL'; 'MN'; 'KM'; 'MM'; 'KL'];
% Convert char array to cell array of strings
Acell = cellstr(A);
% Find groups of strings
[groups, groupID]= findgroups(Acell(:));
% Count members of each group
count = sum(groups(:).' == unique(groups(:)),2);
% Display results in a table
countTable = table(groupID(:),count(:),'VariableNames',{'Group','Count'});
Result
countTable =
4×2 table
Group Count
_____ _____
'KL' 2
'KM' 2
'MM' 1
'MN' 1
  3 Comments
Adam Danz
Adam Danz on 20 Aug 2019
Glad I could help and learn along with ya!
Adam Danz
Adam Danz on 5 Jun 2024
June 5, 2024 - I unaccepted this answer in favor of Lola's better solution using groupcounts that became available in R2019a. Prior to R2019a, I would recommend Steven Lord's answer.

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 19 Aug 2019
Edited: Andrei Bobrov on 19 Aug 2019
A = {'KM'; 'KL'; 'MN'; 'KM'; 'MM'; 'KL'};
out = varfun(@x,table(A),'GroupingVariables','A')
  1 Comment
Burak Alakus
Burak Alakus on 20 Aug 2019
Thank you Mr. Bobrov. This answer really helped me.

Sign in to comment.


Steven Lord
Steven Lord on 4 Jun 2024
Yet another way to do this:
A = ['KM'; 'KL'; 'MN'; 'KM'; 'MM'; 'KL'];
[counts, values] = histcounts(categorical(cellstr(A)))
counts = 1x4
2 2 1 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
values = 1x4 cell array
{'KL'} {'KM'} {'MM'} {'MN'}

Categories

Find more on Numeric Types in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!