Filter löschen
Filter löschen

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

3 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 13 Okt. 2012
Bearbeitet: Andrei Bobrov am 13 Okt. 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]);

Weitere Antworten (2)

Wayne King
Wayne King am 13 Okt. 2012
Bearbeitet: Wayne King am 13 Okt. 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 am 13 Okt. 2012
sum(x(1 : find(x <= 0, 1)))
or
sum(x .* cumprod(x > 0))
  1 Kommentar
Javier
Javier am 13 Okt. 2012
Bearbeitet: Javier am 13 Okt. 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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Tags

Noch keine Tags eingegeben.

Community Treasure Hunt

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

Start Hunting!

Translated by