Effacer les filtres
Effacer les filtres

How can I discretize data by their sign?

1 vue (au cours des 30 derniers jours)
Manling Yang
Manling Yang le 20 Sep 2022
Commenté : Manling Yang le 20 Sep 2022
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]

Réponse acceptée

Stephen23
Stephen23 le 20 Sep 2022
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

Plus de réponses (1)

Chunru
Chunru le 20 Sep 2022
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 commentaire
Manling Yang
Manling Yang le 20 Sep 2022
Thanks! This is really subtle!

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB Compiler dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by