splitting a array at defined interval

1 次查看(过去 30 天)
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

采纳的回答

Cedric
Cedric 2013-4-9
编辑:Cedric 2013-4-9
Alternatively:
loc = find(c >= 10) ;
vind = c(loc) ;
c(loc) = [] ;
out = mat2cell(c, 1, vind) ;
  1 个评论
strunack
strunack 2013-4-10
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.

请先登录,再进行评论。

更多回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-4-9
ii=1;
for k=1:numel(vind)
jj=vind(k)
out{k}=c(ii:jj)
ii=jj+1;
end
  1 个评论
Jan
Jan 2013-4-9
编辑:Jan 2013-4-9
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by