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

1 view (last 30 days)
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

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 13 Oct 2012
Edited: Andrei Bobrov on 13 Oct 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]);

More Answers (2)

Wayne King
Wayne King on 13 Oct 2012
Edited: Wayne King on 13 Oct 2012
x = randn(100,1);
sum(x(x>0))
For an example with integers:
x = randi([-5 5],20,1);
sum(x(x>0))

Walter Roberson
Walter Roberson on 13 Oct 2012
sum(x(1 : find(x <= 0, 1)))
or
sum(x .* cumprod(x > 0))
  1 Comment
Javier
Javier on 13 Oct 2012
Edited: Javier on 13 Oct 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

Sign in to comment.

Categories

Find more on Particle & Nuclear Physics in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!