Borrar filtros
Borrar filtros

splitting a array at defined interval

1 visualización (últimos 30 días)
strunack
strunack el 9 de Abr. de 2013
I have a array c of 276 elements. I want to split it into 3 separate array. The number of elements in each of these three array is within the array c itself.
vind=c(find(c>=10)) %gives me
vind =
45 45 183
I have to split the array c into three arrays with number of elements as 45, 45 and 183 respectively excluding the position of these three numbers. Pls suggest how it can be done.
with thanks

Respuesta aceptada

Cedric
Cedric el 9 de Abr. de 2013
Editada: Cedric el 9 de Abr. de 2013
Alternatively:
loc = find(c >= 10) ;
vind = c(loc) ;
c(loc) = [] ;
out = mat2cell(c, 1, vind) ;
  1 comentario
strunack
strunack el 10 de Abr. de 2013
I accepted this answer, because its very logical, clean and simple way to split without any loop. I could do the same with loop but in a rather inefficient way than Azzi's answer. Thanks to him too.

Iniciar sesión para comentar.

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 9 de Abr. de 2013
ii=1;
for k=1:numel(vind)
jj=vind(k)
out{k}=c(ii:jj)
ii=jj+1;
end
  1 comentario
Jan
Jan el 9 de Abr. de 2013
Editada: Jan el 9 de Abr. de 2013
Please add some code for the pre-allocation also. Otherwise we have to answer corresponding question next week again. Thanks.
As far as I understand, the OP wants the part from ii to jj-1 only.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by