【问题标题】:What does `@(x) myfun(x, F_index)` means in Matlab? [duplicate]`@(x) myfun(x, F_index)` 在 Matlab 中是什么意思? [复制]
【发布时间】:2015-04-12 04:54:33
【问题描述】:

@(x) myfun(x, F_index) 在 MATLAB 中是什么意思?它调用并返回什么?

例如在这个应用程序中:

fmincon(@(x) myfun(x, F_index), ...)

如果可能,请提供更多示例并进行解释。

【问题讨论】:

标签: matlab function handle


【解决方案1】:

它是一个匿名函数,它是一个不存储在程序文件中的函数,而是与一个数据类型为function_handle的变量相关联。就像标准函数一样,匿名函数可以接受输入并返回输出。但是,它们只能包含一个可执行语句。 例如,为查找数字平方的匿名函数创建句柄:

    function out=powerplus1(x,dat)
    out=x^2+dat;
     end

在你写的另一个文件中

dat=1;
sqr = @(x) powerplus1(x,dat);
a = sqrplusone(5)

那么a 将是 26。

变量sqrplusone 是一个函数句柄。 @ 运算符创建句柄,@ 运算符后面的括号 () 包含函数输入参数。这个匿名函数接受单个输入 x,并隐式返回单个输出,一个与 x 大小相同的数组,其中包含平方加一的值。 通过将值传递给函数句柄来找到平方加上一个特定值 (5),就像将输入参数传递给标准函数一样。

a = sqrplusone(5)
a =
   26

【讨论】:

  • 我试图给你一个带有 2 个参数的例子,但我遇到了一些错误。如果其他人可以,请帮助他。我想他想要这样的东西:function out=mypower2(x,dat)out=x^2+dat;endsqr = @(x) mypower2(x,dat)sqr(5)=?
  • 是的,我确实需要知道@Electricman
  • @Electricman 当您使用不在@(...) 列表中的变量创建匿名函数时(如本例中的dat),它们需要已经定义,因为匿名函数将存储它们的值稍后执行。有关示例,请参见 Parameterizing Using Anonymous Functions
  • 我已经编辑了我的答案。 @Jamaisavenir
  • 感谢@TroyHaskin 答案已编辑,希望正确。
猜你喜欢
  • 2013-08-17
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2016-07-18
  • 2020-03-18
  • 2021-08-02
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多