Counting occurrences of a pointer

1 visualización (últimos 30 días)
Alvin Stroyny
Alvin Stroyny el 5 de Ag. de 2013
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?

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 5 de Ag. de 2013
Editada: Azzi Abdelmalek el 5 de Ag. de 2013
u = [3 4 1 1 5]
accumarray(u',[1:numel(u)]',[],@(x) numel(x))
  1 comentario
Jan
Jan el 5 de Ag. de 2013
The additional square brackets are not needed and waste time only:
[1:numel(u)]' ==> faster: (1:numel(u))'

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by