我不知道如何计算单元格中函数句柄总和的积分。请参阅以下示例:
f{1} = @(x) x;
f{2} = @(x) x^2;
g = @(x) sum(cellfun(@(y) y(x), f));
integral(@(x) exp(g), -3,3);
错误:输入功能必须返回' double'或者'单身'值。找到' function_handle'。
PS:请不要改变公式,因为这只是一个例子。我真正的问题远比这复杂得多。它具有此总和的log和exp(整数(log(sum), - inf,inf))。因此,我无法将它们分解为单独进行积分并求积分。我需要使用sum(cellfun)。谢谢。
版本:Matlab R2012a
任何人都可以帮助我吗?真的很感激。
答案 0 :(得分: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
等。