How to split or divide a larger array in to the predetermined size?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
kedar Paul
el 5 de Jul. de 2016
Comentada: Stephen23
el 5 de Jul. de 2016
My original array is only one dimensional of ordeer 1*15000 and 90% of it consisting zeroes. I want to create smaller arrays where there is non zero values and store them in different array. For example if my original array is [0,0,0,0,6,8,6,0,0,0,0,0,8,8,7,6,87,6,0,0,0] then I want it to split in [6,8,6] and [8,8,7,6,87,6].
I wrote the code to determine the starting and ending position of the non zero element but it is lengthy. Is there any other way?
0 comentarios
Respuesta aceptada
Stephen23
el 5 de Jul. de 2016
Editada: Stephen23
el 5 de Jul. de 2016
>> vec = [0,0,0,0,6,8,6,0,0,0,0,0,8,8,7,6,87,6,0,0,0];
>> idx = vec(:)>0;
>> idy = cumsum(diff([0;idx])>0);
>> out = accumarray(idy(idx),vec(idx),[],@(n){n});
>> out{:}
ans =
6
8
6
ans =
8
8
7
6
87
6
4 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!