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

4 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Jos (10584)
Jos (10584) am 14 Dez. 2017
dA = diff(A) ;
Nreversals = sum(diff(dA(dA~=0))<0)
  2 Kommentare
aneps
aneps am 15 Dez. 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) am 16 Dez. 2017
Ok! Corrected code:
dA = sign(diff(A)) ;
Nreversals = sum(diff(dA(dA~=0))<0)
Note there are 15 small reversals in column 4 ...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by