Mercurial > hg > ishara
annotate general/arrutils/extract.m @ 4:e44f49929e56
Adding reorganised general toolbox, now in several subdirectories.
author | samer |
---|---|
date | Sat, 12 Jan 2013 19:21:22 +0000 |
parents | |
children |
rev | line source |
---|---|
samer@4 | 1 % EXTRACT - Extract a sub-array |
samer@4 | 2 % |
samer@4 | 3 % extract :: |
samer@4 | 4 % [[size:[E]]], |
samer@4 | 5 % n:1..E, |
samer@4 | 6 % [[2]->natural]~'start and end indices' |
samer@4 | 7 % -> [[size1:[E]]. |
samer@4 | 8 % |
samer@4 | 9 % Examples (assuming A is 3D): |
samer@4 | 10 % extract(A,2,[4 20]) = A(:,4:20,:) |
samer@4 | 11 % extract(A,3,[2 10]) = A(:,:,2:10) |
samer@4 | 12 function y=extract(x,dim,range) |
samer@4 | 13 |
samer@4 | 14 persistent colons |
samer@4 | 15 |
samer@4 | 16 n=ndims(x); |
samer@4 | 17 if length(colons)<n, |
samer@4 | 18 colons=repmat({':'},1,n); |
samer@4 | 19 end |
samer@4 | 20 |
samer@4 | 21 s=colons(1:n); %cell(1,n); s(:)={':'}; |
samer@4 | 22 s{dim}=range(1):range(2); |
samer@4 | 23 S.type='()'; |
samer@4 | 24 S.subs=s; |
samer@4 | 25 y=subsref(x,S); |