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

2 次查看(过去 30 天)
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

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-5-24
B = mat2cell(A(:)',1,diff(find([true,diff([A(:)'== 5,0]) == -1])));
  3 个评论
Joseph
Joseph 2017-5-24
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);

请先登录,再进行评论。

更多回答(1 个)

KSSV
KSSV 2017-5-24
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)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by