Generating index from end and start index
이전 댓글 표시
I am looking for an efficient way to do the following (without a loop so that large array can be handled efficiently). Any idea ?
A=rand(1,30) % some data from which I want to extract a subset
s=[1 5 10 22]; % start indexes of the subsets I want to extract
e=[3 7 17 25]; % end indexes of the subset I want to extract
R=[];
for i=1:length(s)
R=[R [s(i):e(i)]];
end
S=A(R); % the answer I am looking for, i.e. the subset of data I want to
% extract
댓글 수: 1
per isakson
2012년 9월 10일
편집: per isakson
2012년 9월 10일
- Did you analyze your code with the function, profile?
- Which version of Matlab do you use?
채택된 답변
추가 답변 (2개)
Oleg Komarov
2012년 9월 10일
1 개 추천
Use the mex routine, very fast and reliable.
Azzi Abdelmalek
2012년 9월 10일
A=rand(1,30) ;
s=[1 5 10 22];
e=[3 7 17 25];
l=repmat(1:4,2,1);
idx=eval(['[' sprintf('s(%d):e(%d) ',l(:)') ']'])
S=A(idx)
카테고리
도움말 센터 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!