how to split an array with a periodic set of elements as it reaches to the maximum elements?
2 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Andrei Bobrov
on 24 May 2017
B = mat2cell(A(:)',1,diff(find([true,diff([A(:)'== 5,0]) == -1])));
3 Comments
Andrei Bobrov
on 25 May 2017
Edited: Andrei Bobrov
on 25 May 2017
Please attach your array A with size [32025 x 1] as mat-file.
More Answers (1)
KSSV
on 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)
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!