Select sequence of numbers from Array

20 Ansichten (letzte 30 Tage)
Jochem
Jochem am 2 Feb. 2023
Kommentiert: Dyuman Joshi am 2 Feb. 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 Kommentar
Dyuman Joshi
Dyuman Joshi am 2 Feb. 2023
Is the real array same/similar as this one? Because there's a repeating pattern here so you can easily get the indices.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Stephen23
Stephen23 am 2 Feb. 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

Kategorien

Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by