2014-03-27 6 views
1

У меня есть клетка функции ручки:накопленная сумма ячейки функции ручки

f{1}[email protected](x)a1(x); 
f{2}[email protected](x)a2(x); 
... 
f{N}[email protected](x)aN(x); 

N большое количество здесь. Каков наиболее удобный способ выполнения суммарной суммы для всех этих функций? например Я хочу иметь ячейку новой функции g {} с:

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

Спасибо.

ответ

1

Если вы можете сделать с одной функцииg что возвращает интегральную сумму для скалярнаяx:

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

Пример:

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 

Объяснение: cellfun принимает каждую функцию компонента f{1} , f{2} и т. Д. И возвращает результат оценки этой функции на x. Результат для каждой функции должен быть скалярным. Затем вычисляется суммарная сумма всех этих значений.

+0

Это не дало мне правильного ответа. Не могли бы вы рассказать об этом? Спасибо. Я нашел громоздкий способ работы: g = @ (x) cellfun (@ (f) f (x), f); gg = @ (x) cumsum (g (x)). Теперь gg (x) дает мне то, что я хотел. Есть ли более разумный способ сделать это? – Void

+0

@Void Извините, произошла ошибка. Посмотрите сейчас –