Azzera filtri
Azzera filtri

To Count the reversal of a series of numbers in a column or row.

4 visualizzazioni (ultimi 30 giorni)
I have a data with the first column as follows" A = [1 1 1 1 2 2 2 2 3 3 3 4 4 3 3 2 2 2 3 3 3 3 4 4 4 5 5 5 5 6 6 6 6 6 7 7 7 7 8 8 8 7 7 6 6 7 7 7 8 8 8 9 9 9 9 ]; I want to count how many times the number roll back, means, form the beginning the number keep on increasing and after 4 it reversed again after 2 it start increasing. This thing happen after 7 also. So how can I make a code to count how many times it reversed? For example, in this case , the data A reversed two times. In my original data, I have almost 1000 or even more data with several reversals.

Risposta accettata

Jos (10584)
Jos (10584) il 14 Dic 2017
dA = diff(A) ;
Nreversals = sum(diff(dA(dA~=0))<0)
  2 Commenti
aneps
aneps il 15 Dic 2017
It was looking good to me but when I applied to the real data it is giving wrong result! For eg. in the attached data, the col 2 or col 4 both reverse only once. So, the result of Nreversals should be 1. Instead the code is giving result 6 if I use A(:,2) and 35 if I use A(:,4).
Jos (10584)
Jos (10584) il 16 Dic 2017
Ok! Corrected code:
dA = sign(diff(A)) ;
Nreversals = sum(diff(dA(dA~=0))<0)
Note there are 15 small reversals in column 4 ...

Accedi per commentare.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by