如何计算单元格中函数句柄之和的exp的积分

时间:2014-04-01 11:54:31

标签: matlab

我不知道如何计算单元格中函数句柄总和的积分。请参阅以下示例:

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

任何人都可以帮助我吗?真的很感激。

1 个答案:

答案 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等。