필터 지우기
필터 지우기

Count repetitions separately in an array

조회 수: 2 (최근 30일)
Lea Martine Francoise
Lea Martine Francoise 2023년 3월 17일
댓글: 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 CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by