Matlab是否支持功能对象?

时间:2015-06-18 19:27:20

标签: matlab function-object

试着弄清楚我是否可以访问我们的Matlab脚本中使用的函数对象编程技术。这类似于.NET's Func typePython's function objects。 Matlab是否为函数提供了第一类对象状态?

1 个答案:

答案 0 :(得分:4)

Matlab确实有function handles可以传递给其他函数。作为一个示例,函数fzero将找到您给出的函数的过零作为其第一个参数。函数句柄可以存储在变量,单元格数组或结构中。 Matlab也有anonymous functions,类似于Python的lambda表达式。因此,似乎Matlab中的函数具有要考虑的所有属性first class

一些随机的例子:

>> sq = @(x) x^2 - 2
sq = 
    @(x)x^2-2

>> fzero(sq, 1)
ans =
    1.4142

>> class(sq)
ans =
function_handle

>> functions = {@(x) 2 * x, @(y) 3 * y, @exp}
functions = 
    @(x)2*x    @(y)3*y    @exp

>> functions{2}(10)
ans =
    30

>> functions{3}(1)
ans =
    2.7183