MATLAB Answers

how to split an array with a periodic set of elements as it reaches to the maximum elements?

조회 수: 1(최근 30일)
Joseph
Joseph 23 May 2017
Edited: Andrei Bobrov 25 May 2017
lets say i have an array with periodic set of elements such as below:
A=[2 2 2 3 3 4 4 5 5 5 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 1 1 2 3 3 4 4 4 5 5];
i want to split Array A in to 3 separate arrays(in this case) as it reach to element 5 as below:
B1=[2 2 2 3 3 4 4 5 5 5];
B2=[1 1 1 2 2 2 2 3 3 4 4 4 4 5 5];
B3=[1 1 2 3 3 4 4 4 5 5];
i greatly appreciate your help
thank you

  댓글 수: 0

로그인 to comment.

채택된 답변

Andrei Bobrov
Andrei Bobrov 24 May 2017
B = mat2cell(A(:)',1,diff(find([true,diff([A(:)'== 5,0]) == -1])));

  댓글 수: 3

Joseph
Joseph 24 May 2017
thank you for answer, however when i apply to my array, it gives me below error:
Input arguments, D1 through D2, must sum to each dimension of the input matrix size, [1 32025]
i should mention that my array size is A(32025,1);

로그인 to comment.

More Answers (1)

KSSV
KSSV 24 May 2017
A=[2 2 2 3 3 4 4 5 5 5 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 1 1 2 3 3 4 4 4 5 5];
didx = diff(A==5) ;
idx = find(didx==-1) ;
idx = [0 idx length(A)] ;
N = length(idx)-1 ;
iwant = cell(N,1) ;
for i = 1:N
iwant{i} = A(idx(i)+1:idx(i+1)) ;
end
celldisp(iwant)

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by