matlab - cumsum only within groups? -
lets have 2 vectors:
a=[0 1 0 1 1 0 1 0 0 0 1 1 1]; b=[1 1 1 1 1 1 2 2 2 3 3 3 3];
for every group of numbers in b want cumsum, result should that:
c=[1 3;2 1;3 3]
that means have ones in b 3 ones in a, group 2 in b have 1 one in etc.
if you're looking solution b
can anything, combination of hist
, unique
help:
num = unique(b(logical(a))); %# identify numbers in b non-zero counts cts = hist(b(logical(a)),num); %# count c = [num(:),cts(:)]; %# combine.
if want first column of c
go 1 maximum of b
, can rewrite first line num=1:max(b)
, , you'll rows in c
counts zero.
Comments
Post a Comment