2014-04-01 32 views
2

我不知道如何計算單元格中函數句柄總和的積分。請參閱下面的示例:如何計算單元格中函數句柄總和的exp的積分

f{1} = @(x) x; 
f{2} = @(x) x^2; 

g = @(x) sum(cellfun(@(y) y(x), f)); 
integral(@(x) exp(g), -3,3); 

錯誤:輸入函數必須返回'double'或'single'值。找到'function_handle'。 PS:請不要改變公式,因爲這只是一個例子。我的真正問題遠比這更復雜。它有這個總和的log和exp(整數(log(sum),-inf,inf))。所以我不能把它們分解成單獨的積分和積分。我需要使用sum(cellfun)。謝謝。

版本:Matlab的R2012a

誰能幫助我?萬分感激。

回答

1

您不能添加功能句柄,因此任何嘗試f{1}+f{2}+...都會給出錯誤。

但是你可以計算這樣的數額的積分,計算函數值一次一個併合計結果:

function cellsum 
    f{1} = @(x) x; 
    f{2} = @(x) x.^2; 

    integral(@(x)addfcn(f,x), -3, 3) 
end 

function s = addfcn(f,x) 
    s = zeros(size(x)); 
    for k = 1:length(f) 
     s = s + f{k}(x); 
end 
end 

注意x通常是一個矢量當integral命令撥打電話你的功能。所以你的函數定義應該是矢量化的,即.i.e。,x.^2而不是x^2等。

+0

嗨Kavka,感謝您的幫助。我的真正問題遠比這更復雜。它有這個總和的log和exp(整數(log(sum),-inf,inf))。所以我不能把它們分解成單獨的積分和求積分。我需要使用sum(cellfun) – digdeep

+0

@digdeep你不明白答案。 Kavka沒有單獨集成功能; 「積分」只有一種用法。 'addfcn'代碼也可以包括取對數的總和,或者任何你想應用於函數的公式。 –

相關問題