首页 > 解决方案 > 参考 MATLAB 中的第二个函数输出

问题描述

对于一个项目,我有一个可能的激活函数列表可供选择,具体取决于配置中选择的内容。我希望这些都是 g() 以便 g 是一个可变函数。同样在每个函数文件中,我将导数定义为函数 Dg():

function [g Dg]  = identity(x)
g  = x;
Dg = 1
end

我可以参考函数的第一个输出:

g = @identity

但是我如何以类似的方式定义 Dg() ?

标签: matlab

解决方案


如果要获取函数gDg,则可能希望返回函数句柄。像这样的东西:

function [g,Dg] = identity
   g  = @(x) x;
   Dg = @(x) 1;
end

现在这一行:

[g,Dg] = identity;

将为您提供两个功能,您可以将其用作:

y = g(x);
dy = Dg(x);

一个更复杂的例子,这里返回的实际函数并不是那么复杂,但这显示了机制。您可以使用可调参数、流量控制等创建复杂的函数:

function [g,Dg] = complicated(scale)
   g  = @func;
   Dg = @deriv_func;

   function y = func(x)
      y = cos*scale(x);
   end
   function y = deriv_func(x)
      y = -scale*sin(scale*x);
   end
end

与以前类似,您现在执行以下操作:

[g,Dg] = complicated(4.7);

获取您的函数句柄。4.7 将被“嵌入”在这些句柄中,这意味着它会影响函数的含义gDg.


推荐阅读