matlab积分函数句柄嵌套

时间:2015-03-19 12:31:27

标签: matlab function handle integrate

我在Matlab中集成嵌套函数句柄时遇到问题:

    fun = @(x,y) 2*x*y;
    y = @(x,a) 5*a*x;
    int = integral(@(x)fun(x,y(x,5)),0,2)

实际的嵌套更深入,实际的功能更复杂,但这个例子几乎描述了我的问题,它引发了错误使用* 内部矩阵尺寸必须一致。'

1 个答案:

答案 0 :(得分:1)

这个问题的原因是MATLAB试图传递一个向量,期望你的函数返回一个值向量。试试这个(注意使用逐点产品):

fun = @(x,y) 2*x.*y;
y = @(x,a) 5*a.*x;
int = integral(@(x)fun(x,y(x,5)),0,2)

这是相关MATLAB文档的摘录:

  

对于标量值问题,函数y = fun(x)必须接受向量参数x,并返回向量结果y。这通常意味着fun必须使用数组运算符而不是矩阵运算符。例如,使用。*(次)而不是*(mtimes)。如果你设置了'ArrayValued'选项为true,那么fun必须接受一个标量并返回一个固定大小的数组。