【问题标题】:matlab integral function handle nestedmatlab积分函数句柄嵌套
【发布时间】:2015-03-19 12:31:27
【问题描述】:

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

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

实际的嵌套更深,实际的功能更复杂,但这个例子几乎描述了我的问题,它抛出'Error using * 内部矩阵尺寸必须一致。'

【问题讨论】:

    标签: matlab function handle integrate


    【解决方案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 必须使用数组运算符而不是矩阵运算符。例如,使用 .* (times) 而不是 * (mtimes)。如果将 'ArrayValued' 选项设置为 true,则 fun 必须接受一个标量并返回一个固定大小的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多