سؤال

I have a cell of function handles:

f{1}=@(x)a1(x);
f{2}=@(x)a2(x);
...
f{N}=@(x)aN(x);

N is a large number here. What is the most convenient way to perform cumulative sum on all these function handles? e.g. I want to have a cell of new function g{} with:

g{1}=f{1};
g{2}=f{1}+f{2};
...
g{N}=f{1}+...+f{N}.

Thanks.

هل كانت مفيدة؟

المحلول

If you can do with a single function g that returns the cumulative sum for scalar x:

g = @(x) cumsum(cellfun(@(y) y(x), f))

Example:

f{1} = @(x) x;
f{2} = @(x) x^2;
f{3} = @(x) x^3;
g = @(x) cumsum(cellfun(@(y) y(x), f))
g(3)
ans =
     3    12    39

Explanation: cellfun takes each component function f{1}, f{2} etc and returns the result of evaluating that function at x. The result for each function should be scalar. The cumulative sum of all those values is then computed.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top