matlab - 参考 MATLAB 中的第二个函数输出
问题描述
对于一个项目,我有一个可能的激活函数列表可供选择,具体取决于配置中选择的内容。我希望这些都是 g() 以便 g 是一个可变函数。同样在每个函数文件中,我将导数定义为函数 Dg():
function [g Dg] = identity(x)
g = x;
Dg = 1
end
我可以参考函数的第一个输出:
g = @identity
但是我如何以类似的方式定义 Dg() ?
解决方案
如果要获取函数g
和Dg
,则可能希望返回函数句柄。像这样的东西:
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 将被“嵌入”在这些句柄中,这意味着它会影响函数的含义g
和Dg
.
推荐阅读
- macos - CMake Mac:使用自定义命令/目标创建通用二进制文件
- regex - 在 Rust 中为正则表达式组合多个字符串时出现“十进制文字为空”
- python - 大量列表连接
- swift - 在第二个 ViewController 中使用 NSDocument 保存
- spring-boot - Spring Boot - 我在哪里可以找到这个 Bean。是豆子吗?
- python - 指示将 JSON 字符串反序列化为 Object 的类类型
- java - IntelliJ IDEA 中的 JTS 拓扑套件
- haskell - 每个 monad 都是一个应用函子——泛化到其他类别
- javascript - 如何使用 WebVR 和 A-Frame 跟踪控制器移动事件?
- javascript - Vue.js 2 替代使用键作为 JSON.stringify(obj) 在从 xhr 回调更改 obj 时重新渲染子组件