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
No products are associated with this question.
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]);
x = randn(100,1); sum(x(x>0))
For an example with integers:
x = randi([-5 5],20,1); sum(x(x>0))
Thanks, but I just want to sum the sequence of positive numbers that are together, not all positive
Regards Claudio
sum(x(1 : find(x <= 0, 1)))
or
sum(x .* cumprod(x > 0))
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
0 Comments