Select sequence of numbers from Array

9 vues (au cours des 30 derniers jours)
Jochem
Jochem le 2 Fév 2023
Commenté : Dyuman Joshi le 2 Fév 2023
Lets say I have an array like so:
[1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4]
(my real array is 3635 long)
I want to make a new array which shows which indexes have an nth time of sequence of 1's.
So like this:
the 3rd time the 1's are in sequence so in this case i would like it to return: [37 38 39]
  1 commentaire
Dyuman Joshi
Dyuman Joshi le 2 Fév 2023
Is the real array same/similar as this one? Because there's a repeating pattern here so you can easily get the indices.

Connectez-vous pour commenter.

Réponses (1)

Stephen23
Stephen23 le 2 Fév 2023
V = [1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4];
X = V(:)==1;
Y = cumsum(diff([0;X])>0);
Z = 1:numel(V);
C = accumarray(Y(X),Z(X),[],@(a){a})
C = 4×1 cell array
{3×1 double} {3×1 double} {3×1 double} {3×1 double}
C{:}
ans = 3×1
1 2 3
ans = 3×1
13 14 15
ans = 3×1
25 26 27
ans = 3×1
37 38 39

Catégories

En savoir plus sur Get Started with MATLAB 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