Série de numéros consécutifs (différentes longueurs)
J'apprécierais si quelqu'un m'a montré un moyen facile de le faire. Disons que j'ai un vecteur dans MATLAB comme
d = [3 2 4 2 2 2 3 5 1 1 2 1 2 2 2 2 2 9 2]
Je veux trouver la série consécutive de nombre "deux" et les longueurs de ces séries.
Numéro deux peut facilement être trouvé en x=find(d==2)
. Mais ce que je veux est d'obtenir un vecteur qui contient les longueurs de toutes les séries de nombres consécutifs de deux, ce qui signifie que mon résultat dans ce cas serait un vecteur comme ceci:
[1 3 1 5 1].
Quelqu'un qui pourrait m'aider?
- question connexe: MATLAB: trouver les îles de zéros dans une séquence
Vous devez vous connecter pour publier un commentaire.
Cela semble fonctionner:
donne
pour moi
v
ne sera pas un vecteur est si il n'y a qu'un seul des 2, auquel cas il sera un scalaire, ou si il n'y a pas 2 du présent, auquel cas il sera[]
. Je ne sais pas ce que vous entendez par "dynamique" ici - peut-être un peu plus explicite?Ce qui est appelé run length encoding (encodage. Il y a un bon m-fichier disponible pour http://www.mathworks.com/matlabcentral/fileexchange/4955-rle-deencoding . Cette méthode est généralement plus rapide que précédemment posté diff/trouver moyen.
Temps écoulé est 0.002632 secondes.
Temps écoulé est 0.003061 secondes.
Que si nous voulons que les indices de la matrice d'origine où les valeurs consécutives sont situés? De plus, si nous voulons une matrice de même taille que la matrice d'origine, où le nombre de valeurs consécutives sont stockés dans les indices des valeurs consécutives? Par exemple:
Ce problème présente un intérêt pour les données météorologiques de contrôle de la qualité. Par exemple, si j'ai une matrice de données de température à partir d'un certain nombre de capteurs, et je veux savoir quels sont les jours avaient constante des valeurs consécutives, et combien de jours ont été constante, de sorte que je peux, puis marquer les données comme peut-être défectueux.
la température de la matrice est le nombre de jours x nombre de stations et j'ai envie d'une sortie de la matrice, qui est aussi le nombre de jours x nombre de stations, où les valeurs consécutives sont marqués comme décrit ci-dessus.