anonymous function which outputs a vector of sums when the input is a vector of indices.
1 view (last 30 days)
Show older comments
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!!
1 Comment
Walter Roberson
on 7 Nov 2015
If your A are always going to be consecutive then you can use cumsum()
Accepted Answer
per isakson
on 7 Nov 2015
Edited: per isakson
on 7 Nov 2015
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!
More Answers (0)
See Also
Categories
Find more on Function Creation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!