MATLAB: Anonymous function which outputs a vector of sums when the input is a vector of indices.

anonymous functionindexing

I'd like to write an anonymous function such as
f = @(X,m,A) sum(X(m:A))
where X is a vector,
m < numel(X),
and A is a subset of
[ m+1,numel(X) ],
which outputs a vector, the i'th element of which is sum(X(m:A(i)))
For example, let
X = [ 1:7 ], m = 4, A = [5:6]
I'd like my function f(X,m,A) to output
[ 4+5, 4+5+6 ]= [ 9 , 15 ]
Thanks for any help!!

Best Answer

Try
>> f = @(X,ix1,ix2) arrayfun( @(ix) sum(X(ix1:ix)), ix2 );
>> f([1:7],4,[5:6])
ans =
9 15
>> f([1:7],4,[5,7])
ans =
9 22
>> f([1:7],4,[7,5])
ans =
22 9
it seems to do it!