【问题标题】:multiple step anonymous functions多步匿名函数
【发布时间】:2023-03-05 00:12:02
【问题描述】:

我有一个相当复杂的函数,我想写一个匿名函数。

看起来像这样:

function Answer = MatlabFunction(x)
a=4*x;
b=sin(a);
c=cos(b);
Answer = c;

但是,我不知道如何将其放入匿名函数中。有没有办法在不将其编写为多个级联函数的情况下做到这一点?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    有两种方式:

    或者,您将函数MatlabFunction 保存在 Matlab 路径中,并将您的匿名函数定义为

    myFun = @MatlabFunction;
    

    或者,你直接定义函数为

    myFun = @(x)cos(sin(4*x));
    

    【讨论】:

    • 有不同的方法吗?我想设置函数想在for循环的每个循环中更改部分函数,​​所以我不能使用外部文件。我的实际功能要复杂得多,所以我不能把它组合成一行。
    • @Brian:我在这里回答了你的另一个问题:stackoverflow.com/questions/3673112/…
    • 你可以将几个任意选择的函数句柄传递给你的'worker'函数。
    【解决方案2】:

    Matlab 因不支持多步匿名函数而臭名昭著。然而,存在一些丑陋的技巧来规避这个限制。 http://www.mathworks.com/matlabcentral/answers/50195-is-it-possible-to-write-several-statements-into-an-anonymous-function 介绍了一些,例如:

    if/else 可以通过以下方式以函数形式编码:

    FHEXEC = @(FH) FH();
    FHSELECT = @(TF,CONDITION) TF(CONDITION==[true,false]);
    IF = @(CONDITION,TRUEFUNC,FALSEFUNC) FHEXEC( FHSELECT([TRUEFUNC,FALSEFUNC],CONDITION) )
    

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多