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 ];

2 Kommentare

Don't use numbered variables. Use diff, a loop and a cell array instead.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

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

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2017a

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by