Borrar filtros
Borrar filtros

How count positive numbers, but when you get a negative, the sum stops. so then, sum the following sequence of positive numbers..

3 visualizaciones (últimos 30 días)
Example
v =
1 1 -1 1 1 1 -1 -1 1
%sum the sequence of positive numbers that are together
sol =
2 3 1
Regards Claudio

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 13 de Oct. de 2012
Editada: Andrei Bobrov el 13 de Oct. de 2012
v = [1 1 -1 1 1 1 -1 -1 1];
z = v > 0;
id = find([true;diff(v.') ~= 0]);
k = diff([id;numel(v)+1]);
out = k(z(id));
or use Image Processing Toolbox
v = [1 1 -1 1 1 1 -1 -1 1]
z = v > 0;
s = regionprops(z, 'Area');;
out = [s.Area];
or
v = [1 1 -1 1 1 1 -1 -1 1];
v1 = [-v(1)*sign(v(1)),v,-v(end)*sign(v(end))];
out = strfind(v1,[1, -1])-strfind(v1,[-1 1]);

Más respuestas (2)

Wayne King
Wayne King el 13 de Oct. de 2012
Editada: Wayne King el 13 de Oct. de 2012
x = randn(100,1);
sum(x(x>0))
For an example with integers:
x = randi([-5 5],20,1);
sum(x(x>0))
  1 comentario
Javier
Javier el 13 de Oct. de 2012
Thanks, but I just want to sum the sequence of positive numbers that are together, not all positive
Regards Claudio

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 13 de Oct. de 2012
sum(x(1 : find(x <= 0, 1)))
or
sum(x .* cumprod(x > 0))
  1 comentario
Javier
Javier el 13 de Oct. de 2012
Editada: Javier el 13 de Oct. de 2012
Thanks Walter, but I just want to sum the sequence of positive numbers that are together
Example
v =
1 1 -1 1 1 1 -1 -1 1
%sum the sequence of positive numbers that are together
sol =
2 3 1

Iniciar sesión para comentar.

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by