MATLAB Answers

How to count the number of times that values changes?

40 views (last 30 days)
A=[1 1 1 2 1 3 3 1 1]' I want to get:
B=[NaN 0 0 1 2 3 3 4 4]'
The second and third values of B are 0 because A doesn't change value. Fourth value is 1 because A changes value. Fifth value is 2 because A changes value again. And so on...

  0 Comments

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 9 Jan 2021
Edited: Stephen Cobeldick on 9 Jan 2021
A = [1;1;1;2;1;3;3;1;1]
A = 9×1
1 1 1 2 1 3 3 1 1
B = [NaN;cumsum(diff(A)~=0)]
B = 9×1
NaN 0 0 1 2 3 3 4 4

  0 Comments

Sign in to comment.

More Answers (1)

Mario Malic
Mario Malic on 9 Jan 2021
Edited: Mario Malic on 9 Jan 2021
Hello,
This should do the trick.
B = [NaN; cumsum(diff(A) ~= 0)]';

  2 Comments

Stephen Cobeldick
Stephen Cobeldick on 9 Jan 2021
A = [1 1 1 2 1 3 3 1 1]';
B = [NaN, cumsum(diff(A) ~= 0)]'
Error using horzcat
Dimensions of arrays being concatenated are not consistent.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!