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

3 ビュー (過去 30 日間)
aneps
aneps 2017 年 12 月 14 日
コメント済み: Jos (10584) 2017 年 12 月 16 日
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.

採用された回答

Jos (10584)
Jos (10584) 2017 年 12 月 14 日
dA = diff(A) ;
Nreversals = sum(diff(dA(dA~=0))<0)
  2 件のコメント
aneps
aneps 2017 年 12 月 15 日
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) 2017 年 12 月 16 日
Ok! Corrected code:
dA = sign(diff(A)) ;
Nreversals = sum(diff(dA(dA~=0))<0)
Note there are 15 small reversals in column 4 ...

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDynamic System Models についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by