フィルターのクリア

How can I discretize data by their sign?

1 回表示 (過去 30 日間)
Manling Yang
Manling Yang 2022 年 9 月 20 日
コメント済み: Manling Yang 2022 年 9 月 20 日
I would like to discretize data by their sign and return the index of 'alternating sign'.
For example if I have a vector:
A = [-2,-1,5,-10,7,3,-9,-12,11];
Their signs are like:
s = sign(A)
[-1,-1,1,-1,1,1,-1,-1,1]
I would like to return:
[1,1,2,3,4,4,5,5,6]

採用された回答

Stephen23
Stephen23 2022 年 9 月 20 日
A = [-2,-1,5,-10,7,3,-9,-12,11];
B = sign(A);
C = cumsum(logical([1,diff(B)]))
C = 1×9
1 1 2 3 4 4 5 5 6

その他の回答 (1 件)

Chunru
Chunru 2022 年 9 月 20 日
A = [-2,-1,5,-10,7,3,-9,-12,11];
s = sign(A)
s = 1×9
-1 -1 1 -1 1 1 -1 -1 1
s1 = [1 diff(s)~=0]
s1 = 1×9
1 0 1 1 1 0 1 0 1
y = cumsum(s1)
y = 1×9
1 1 2 3 4 4 5 5 6
% [1,1,2,3,4,4,5,5,6]
  1 件のコメント
Manling Yang
Manling Yang 2022 年 9 月 20 日
Thanks! This is really subtle!

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

カテゴリ

Help Center および File ExchangeMATLAB Compiler についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by