Borrar filtros
Borrar filtros

How do I replace same values in an array?

1 visualización (últimos 30 días)
Fabio
Fabio el 20 de Mayo de 2014
Comentada: Fabio el 22 de Mayo de 2014
If I have this couples of values: 1—5; 2—7; 3—4; 2—3; 6—5 and I want that the first column is the x column and the second one is the y column of an xy graph (especially an histogram), how can I make that for the same value of x, y is the sum of y values for the same x as follow? 1—5; 2—10; 3—4; 6—5.
Thank you
Fabio

Respuesta aceptada

dpb
dpb el 20 de Mayo de 2014
If
xy=your array;
y=accumarray(xy(:,1),xy(:,2));
See
doc unique
doc accumarray
for how the above works...
>> xy=[1 5;2 4;3 8; 2 6];
>> [unique(xy(:,1)) accumarray(xy(:,1),xy(:,2))]
ans =
1 5
2 10
3 8
  4 comentarios
dpb
dpb el 21 de Mayo de 2014
Or in place without a temporary,
ac(ac==0)=[]; % to delete zeros
You can also get more clever in using unique and accumarray together with the alternate outputs of unique as indices and anonymous functions to only sum the nonzero entities. I'll leave as "exercise for the student"; the nuances of accumarray are legion and an area of expertise to be gained all of its own. :)
Fabio
Fabio el 22 de Mayo de 2014
Thank you again :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre NaNs 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