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

3 次查看(过去 30 天)
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

采纳的回答

Andrei Bobrov
Andrei Bobrov 2012-10-13
编辑:Andrei Bobrov 2012-10-13
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]);

更多回答(2 个)

Wayne King
Wayne King 2012-10-13
编辑:Wayne King 2012-10-13
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 2012-10-13
sum(x(1 : find(x <= 0, 1)))
or
sum(x .* cumprod(x > 0))
  1 个评论
Javier
Javier 2012-10-13
编辑:Javier 2012-10-13
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by