How to count the number of consecutive numbers of the same value in an array
    조회 수: 22 (최근 30일)
  
       이전 댓글 표시
    
I have an array given as
x = [1 1 1 2 2 1 1 1]
I'd like to know a way I could go through each individual element in the array, and getting a value for how many steps the number stays at the same value. For instance, for this example, the output I would be looking for would be
y = [2 1 0 1 0 2 1 0]
Where the first value of 1 stays constant for another 2 steps, the second stays constant for one more step etc.
댓글 수: 0
채택된 답변
  Jos (10584)
      
      
 2014년 2월 24일
        % data
  x = [1 1 1 2 2 1 1 1 3 3 3 3 3 5]
% engine
  i = find(diff(x)) 
  n = [i numel(x)] - [0 i]
  c = arrayfun(@(X) X-1:-1:0, n , 'un',0)
  y = cat(2,c{:})
댓글 수: 2
추가 답변 (2개)
  Andrei Bobrov
      
      
 2014년 2월 25일
        c = [1 1 1 2 2 1 1 1];
v = numel(c):-1:1;
ii = [true,diff(c)~=0];
n = v(ii);
t = [n(2:end)+1,1];
out = v - t(cumsum(ii));
댓글 수: 0
  Roger Stafford
      
      
 2014년 2월 24일
        Here's a slightly different way:
 x = [2 2 5 5 5 6 6 6 6 4 7 2 2 2];
 n = size(x,2);
 f = find([true,diff(x)~=0,true]);
 y = zeros(1,n);
 y(f(1:end-1)) = diff(f);
 y = cumsum(y(1:n))-(1:n);
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




