Vector elements are indices of another vector Matlab -


i have 1x10 vector a

a = [11 22 33 44 55 66 77 88 99 111] 

each value in a represents index in vector b 1x200.

i want each value in vector a , go index of value in vector b , value of index , 10 items before , 10 items after.

for example, first element in vector a 11, i'll go index 11 in vector b , value of index (11th value) , value of 10 items before (from 1 10) , 10 items after (from 12 21), same every element in a.

is possible without loops?

here on using bsxfun

r = b(bsxfun(@plus, a(:), -10:10)); 

now row n in r contains elements corresponding element n in a. if want in vector use:

r = reshape(b(bsxfun(@plus, a(:), -10:10)), 1, []);