Count repetitions separately in an array

1 回表示 (過去 30 日間)
Lea Martine Francoise
Lea Martine Francoise 2023 年 3 月 17 日
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 件のコメント
Lea Martine Francoise
Lea Martine Francoise 2023 年 3 月 17 日
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

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2023 年 3 月 17 日
編集済み: Stephen23 2023 年 3 月 17 日
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 件のコメント
Lea Martine Francoise
Lea Martine Francoise 2023 年 3 月 17 日
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
Lea Martine Francoise
Lea Martine Francoise 2023 年 3 月 17 日
Thank you very much !!

サインインしてコメントする。

その他の回答 (1 件)

Antoni Garcia-Herreros
Antoni Garcia-Herreros 2023 年 3 月 17 日
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 件のコメント
Lea Martine Francoise
Lea Martine Francoise 2023 年 3 月 17 日
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 :)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by