【问题标题】:@(t) mean in Matlab? [duplicate]@(t) 在 Matlab 中是什么意思? [复制]
【发布时间】:2014-07-06 17:44:00
【问题描述】:

正如标题所暗示的,在下面的上下文中,@(t) 在 Matlab 中的确切含义是什么? computeNumericalGradient 是一个函数,cofiCostFunc 也是一个接受一堆参数的函数。问题是@(t) 究竟对 cofiCostFunc 函数做了什么?

computeNumericalGradient( ...
                @(t) cofiCostFunc(t, Y, R, num_users, num_movies, ...
                                num_features, lambda), [X(:); Theta(:)]);

【问题讨论】:

    标签: matlab


    【解决方案1】:

    @(t) 就是所谓的anonymous function。因此@(t) 将返回一个句柄 给一个函数,该函数接受一个变量t。基本上,它是一个接受一个参数t 的函数。其余参数之前在您的工作区中定义。

    您在这里所做的是computeNumericalGradient 的第一个参数接受一个函数,其中t 是您定义的变量。因此,您的 computeNumericalGradient 接受 两个 参数:

    1. 一个像以前一样定义的匿名函数。
    2. 两个列向量相互连接的单个一维向量 - 第一列是 X,第二列是 Theta

    作为旁注,如果您要这样做:

    func = @(t) cofiCostFunc(t, Y, R, num_users, num_movies, num_features, lambda);
    

    因此,您可以通过执行func(t) 来调用此函数,其中t 是您想要的与手头函数相关的任何变量。因此,代码将简化为:

    computeNumericalGradient(func, [X(:); Theta(:)]);
    

    我不熟悉你在这里做什么,所以你必须弄清楚上下文。

    【讨论】:

      【解决方案2】:

      它是一个匿名函数的句柄。我猜 computeNumericalGradient 期待一个带有一个参数(t)的函数。通过提供剩余的值,这实质上将 cofiCostFunc 重新定义为仅 t 的函数。

      您可以在这里阅读更多内容:

      http://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html#bsgigzp-4

      【讨论】:

      • 赞成将您带到下一级特权。很抱歉打了你一拳:(但还是很好的答案!
      • 哈哈谢谢 :) 在看到 simulpost 后,我​​实际上支持了你的帖子。很好的解释。
      猜你喜欢
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多