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

8 visualizaciones (últimos 30 días)
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 ];

Respuesta aceptada

Stephen23
Stephen23 el 29 de Jul. de 2018
X = cumsum([true,diff(A)~=1]);
C = accumarray(X(:),A(:),[],@(m){m});

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by