How to count the number of times that values changes?

18 vues (au cours des 30 derniers jours)
Mia Dier
Mia Dier le 9 Jan 2021
Commenté : Mario Malic le 9 Jan 2021
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...

Réponse acceptée

Stephen23
Stephen23 le 9 Jan 2021
Modifié(e) : Stephen23 le 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

Plus de réponses (1)

Mario Malic
Mario Malic le 9 Jan 2021
Modifié(e) : Mario Malic le 9 Jan 2021
Hello,
This should do the trick.
B = [NaN; cumsum(diff(A) ~= 0)]';
  2 commentaires
Stephen23
Stephen23 le 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.
Mario Malic
Mario Malic le 9 Jan 2021
Thanks Stephen, fixed it now.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by