MATLAB Answers

How to sum repeated adjacent values in a vector

17 views (last 30 days)
Galgool
Galgool on 27 Apr 2019
Commented: Galgool on 28 Apr 2019
Hi guys,
I have a random vector with -1 and 1.
for example:
X = [1, 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, -1]
I wish to creat a vector that sums repeated adjacent values.
so for the above example:
Y = [2, -1, 3, -2, 1, -1, 4, -2]
any idea?

  0 Comments

Sign in to comment.

Answers (1)

Cedric Wannaz
Cedric Wannaz on 27 Apr 2019
Edited: Cedric Wannaz on 27 Apr 2019
Here is one way:
Y = splitapply( @sum, X, [0, cumsum( diff(X) ~= 0 )] + 1 ) ;
or, split into two expressions that make it easier to understand:
groupId = [0, cumsum( diff(X) ~= 0 )] + 1 ;
Y = splitapply( @sum, X, groupId ) ;

Tags