Find Number of Elements in an Array

26 vues (au cours des 30 derniers jours)
Burak Alakus
Burak Alakus le 19 Août 2019
Commenté : Adam Danz le 5 Juin 2024
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?

Réponse acceptée

Lola Davidson
Lola Davidson le 4 Juin 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

Plus de réponses (3)

Adam Danz
Adam Danz le 19 Août 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 commentaires
Adam Danz
Adam Danz le 20 Août 2019
Glad I could help and learn along with ya!
Adam Danz
Adam Danz le 5 Juin 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.

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 19 Août 2019
Modifié(e) : Andrei Bobrov le 19 Août 2019
A = {'KM'; 'KL'; 'MN'; 'KM'; 'MM'; 'KL'};
out = varfun(@x,table(A),'GroupingVariables','A')
  1 commentaire
Burak Alakus
Burak Alakus le 20 Août 2019
Thank you Mr. Bobrov. This answer really helped me.

Connectez-vous pour commenter.


Steven Lord
Steven Lord le 4 Juin 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'}

Catégories

En savoir plus sur Cell Arrays dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by