Count element of cell array that are names
2 views (last 30 days)
Show older comments
Alexandre Mangot
on 17 Jan 2018
Commented: Alexandre Mangot
on 19 Jan 2018
Hello,
I have a 1x24 cell array called "type" that contains on the first row multiple cell arrays that are of different size but always SIZEx1 cell. For instance, type{1,1} is a 2005x1 cell then type{1,2} is a 3176x1 cell. They all have 1 column. Data inside are of the class cell but are Names (Type1, Type2, Type3, ..., Type8). I am trying to count the amount of occurence of Type1 through Type8 in the 24 cell arrays.
What I have tried so far was to modified the class of my data to get strings and then use the function count. But I haven't found a way to do that.
I also tried to format the 1x24 cell array into a 3176x24 cell array using cellstr in a for loop (3176 being the longest column of my data). I was able to achieve that, however the data class is still cell and since all columns are not of the same length, [] was added to complete the 3176x24 cell array.
Any help would be appreciated (R2016a).
1 Comment
Jan
on 17 Jan 2018
I'm not sure if I understand the format of your inputs. Why did you try to create a 3176x24 cell array? What about: cat(1, type{:})?
Accepted Answer
Alexandre Mangot
on 18 Jan 2018
2 Comments
Jos (10584)
on 18 Jan 2018
TypeCount = arrayfun(@(k) cellfun(@(c) sum(strcmp(c, type{k})), Typenames), 1:numel(type), 'un', 0)
More Answers (1)
Jan
on 17 Jan 2018
Edited: Jan
on 17 Jan 2018
Do you mean this:
% Join all cell strings:
c = cat(1, type{:});
% Create list of searched strings:
Pool = sprintfc('Type%d', 1:8); % {'Type1', 'Type2', ...}
% Count the occurrences:
[~, locB] = ismember(c, Pool);
Count = histcounts(LocB, , 'BinMethod', 'Integers')
?
3 Comments
Jan
on 19 Jan 2018
I have "locB" in one line and the typo "LocB" in the next line. I assume a reader can fix this.
I see, that you could modify my code easily by using a loop. So I'm glad, that I could help you.
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!