필터 지우기
필터 지우기

splitting a array at defined interval

조회 수: 1 (최근 30일)
strunack
strunack 2013년 4월 9일
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