Count repetitions separately in an array

2 visualizzazioni (ultimi 30 giorni)
I have this array
A = [1;1;2;2;2;2;2;2;3;1;1;1;1;4;4;4;1;1;1;5;5];
I want Matlab to tell me when the repetition of 1 is greater than 2 for example, but I don't know any function that does this.
Could you help ? Thanks a lot !
  1 Commento
Lea Martine Francoise
Lea Martine Francoise il 17 Mar 2023
For example, I want Matlab to tell me the position in my vector of where I have 4 ones in a row for example which here would be indices 10 to 14

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 17 Mar 2023
Modificato: Stephen23 il 17 Mar 2023
A = [1;1;2;2;2;2;2;2;3;1;1;1;1;4;4;4;1;1;1;5;5];
D = diff([0;A;0]==1);
B = find(D>0);
E = find(D<0);
L = E-B
L = 3×1
2 4 3
X = find(L>2);
B(X) % start indices
ans = 2×1
10 17
E(X)-1 % end indices
ans = 2×1
13 19
  2 Commenti
Lea Martine Francoise
Lea Martine Francoise il 17 Mar 2023
I think that would be perfect but how do I get the end indices also ? Because I want to fill those indices with NaN. For example for a condition when I have 6 ones in a row, I want to replace them by NaN

Accedi per commentare.

Più risposte (1)

Antoni Garcia-Herreros
Antoni Garcia-Herreros il 17 Mar 2023
Hello Lea,
Try something like this:
% Where 1 would be the number you are looking and 2 the number of repeats
sum(A==1)>2 % True if there are more than two instances of 1 in your array
  1 Commento
Lea Martine Francoise
Lea Martine Francoise il 17 Mar 2023
Yes but I guess this does not give me the indices of where I have for example 5 ones in a row and this is what I am looking for :)

Accedi per commentare.

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by