counting strings in cell array, is there a faster solution
1 view (last 30 days)
Show older comments
Scragmore
on 27 Jan 2012
Commented: Manduna Watson
on 30 Jun 2014
Hi all.
I have two cell array's test1 240000x1 and test2 160000x1. Each cell of test1 contains a string, varying lengths 1-20 charicters. test2 is a list of unique entries from test1.
I wish to count the number of occurrences of each unique string in test2 in test1.
example strings in test1 & 2
test1 = {'ayooy'; 'ayta'; 'a'; 'aa'; 'aatl'; 'aatla'; ......};
test2 = {'a'; 'aa'; 'aaa'; 'aaaa'; 'aaaaa'; 'aaaac'; .......};
My code;
for ii = 1:length(test2)
b = ismember(test1,test2(ii,1));
test2{ii,2}(1,1) = sum(b);
end
Is there a way to speed this up or an alternative method that is faster. I know I am running a lookup that is 160k * 240k = 40,000 mill.
Thanks for you time
AD
0 Comments
Accepted Answer
Walter Roberson
on 27 Jan 2012
When you construct test2, use a different form of unique:
[test2, ua, ub] = unique(test1);
After that, the counts are:
test2counts = histc(ub, 1:length(test2));
2 Comments
Manduna Watson
on 30 Jun 2014
Thank you, this really helped me to identify and count repeated characters in my data set
More Answers (0)
See Also
Categories
Find more on Testing Frameworks 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!