Sort sequencial data from an array into separate arrays
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Leyon
el 21 de Oct. de 2013
Comentada: Cedric
el 21 de Oct. de 2013
Lets say I have an array
A = {3 4 5 6 8 9 12 15 16 17}
I want to get sequences such as
A1 = {3 4 5 6}
A2 = {8 9}
A3 = {12}
A4 = {15 16 17}
How would I approach such a problem. This issue is part of a larger problem I am solving in selecting data ranges from excel sheets. Any help would be nice. Thanks
0 comentarios
Respuesta aceptada
Cedric
el 21 de Oct. de 2013
Editada: Cedric
el 21 de Oct. de 2013
You can proceed as follows to create blocks of consecutive numbers:
A_num = [A{:}] ;
bStart = [0, find(diff(A_num)>1), numel(A)] + 1 ;
bSize = diff( bStart ) ;
A_block = mat2cell( A_num, 1, bSize ) ;
With that, you get
>> bStart
bStart =
1 5 7 8 11
>> bSize
bSize =
4 2 1 3
>> A_block
A_block =
[1x4 double] [1x2 double] [12] [1x3 double]
>> A_block{1}
ans =
3 4 5 6
3 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Cell Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!