什么是匿名函数?
匿名函数是不存储在程序文件中、但与数据类型是function_handle的变量相关的函数。匿名函数可以接受多个输入并返回一个输出。它们可能只包含一个可执行语句。
例如,创建用于计算平方数的匿名函数的句柄:
sqr = @(x) x.^2;
变量sqr是一个函数句柄。@运算符创建句柄,@运算符后面的圆括号()包括函数的输入参数。该匿名函数接受单个输入x,并显式返回单个输出,即大小与包含平方值的x相同的数组。
通过将特定值 (5) 传递到函数句柄来计算该值的平方,与您将输入参数传递到标准函数一样。
a = sqr(5)
a = 25
许多 MATLAB®函数接受将函数句柄用作输入,这样您可以在特定值范围内计算函数。您可以为匿名函数或程序文件中的函数创建句柄。使用匿名函数的好处是不必为仅需要简短定义的函数编辑和维护文件。
例如,通过将函数句柄传递到integral函数,计算sqr函数从0到1范围内的积分:
q = integral(sqr,0,1);
您无需在工作区中创建变量以存储匿名函数。可以在表达式内创建临时函数句柄,例如这次对integral函数的调用:
q = integral(@(x) x.^2,0,1);
表达式中的变量
函数句柄不仅可以存储表达式,还能存储表达式进行计算需要的变量。
例如,为需要系数a、b和c的匿名函数创建句柄。
a = 1.3; b = .2; c = 30; parabola = @(x) a*x.^2 + b*x + c;
由于a、b和c在您创建parabola时可用,该函数句柄包含这些值。即使您清除变量,这些值仍持久保留在函数句柄内:
clearabc x = 1; y = parabola(x)
y = 31.5000
要为这些系数提供不同值,您必须创建新的函数句柄:
a = -3.9; b = 52; c = 0; parabola = @(x) a*x.^2 + b*x + c; x = 1; y = parabola(1)
y = 48.1000
可以将函数句柄及其相关值存储在 MAT 文件中,然后使用save和load函数在后续的 MATLAB 会话中加载它们,例如