【问题标题】:Define a function with a function handler as argument使用函数处理程序作为参数定义函数
【发布时间】:2016-01-18 10:55:29
【问题描述】:

是否可以在 Matlab 中定义带有函数处理程序的函数作为参数?

我试过了

function x = name(@f,gh)

但我收到一条错误消息,指出“@”处的语法无效。

【问题讨论】:

    标签: matlab function-handle


    【解决方案1】:

    您不能在函数定义中使用涉及@ 的语法。匿名函数句柄可以完成这项工作:

    function x = SO_Example(h,gh)
    x = h(gh);
    

    您可以按如下方式调用该函数:

    SO_Example(@(a)a.^2 , 2)
    ans = 4
    

    或者像这样:

    h = @(a)a.^2;
    SO_Example(h,2)
    
    ans = 4
    

    请参阅 cmets 以获得更多解释

    【讨论】:

    • 为了澄清,您可能会添加参数解析器将尝试解析“@()..something”而不是将函数句柄传递给函数体的解释。
    • @CarlWitthoft 了解 Matlab 背后机制的好点。但是,除此之外,传递@(...) 的意义何在?参数是在函数执行之前不确切知道的东西。我认为 OP 只是想告诉 Matlab 一个参数是一个函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多