Counting occurrences of a pointer
2 views (last 30 days)
Show older comments
n=5;
h=zeros(n,1);
u=ceil(rand(n,1)*n); % random sample on (1,n) with replacement
h(u) = h(u) +1;
u = [3 4 1 1 5]]
h = [1 0 1 1 1]
note h(1) = 1 not 2 even though there are 2 occurrences of 1 in u
I know the following loop will count properly
for i=1:n
h(u(i)) = h(u(i)) +1;
end
How can I code this a a vector operation without a loop?
0 Comments
Accepted Answer
Azzi Abdelmalek
on 5 Aug 2013
Edited: Azzi Abdelmalek
on 5 Aug 2013
u = [3 4 1 1 5]
accumarray(u',[1:numel(u)]',[],@(x) numel(x))
1 Comment
Jan
on 5 Aug 2013
The additional square brackets are not needed and waste time only:
[1:numel(u)]' ==> faster: (1:numel(u))'
More Answers (0)
See Also
Categories
Find more on Variables 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!