Split array into separate arrays, where difference between values exceeds a specific number

Let's say I have this array.
A = [1 2 3 4 10 11 12 20 21 22 23 29 30 31 32 40 41 42];
In this array, between the 4th and 5th the array increments by 6, then between the 7th and 8th by 8, with all others by 1 and so on. I'd like to split the array up into separate arrays between the jumps that exceed 1. For this array I'm expecting an output like this.
Out1 = [ 1 2 3 4 ];
Out2 = [ 10 11 12 ];
Out3 = [ 20 21 22 23 ];
Out4 = [ 29 30 31 32 ];
Out5 = [ 40 41 42 ];

 채택된 답변

X = cumsum([true,diff(A)~=1]);
C = accumarray(X(:),A(:),[],@(m){m});

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

릴리스

R2017a

태그

질문:

2018년 7월 29일

댓글:

Rik
2018년 7월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by