函数句柄是指向另一个函数的指针,使用以下语法定义:
@function-name
例如:
f = @sin;
上述代码创建了一个名为 f 的函数句柄,它指向函数 sin。
函数句柄用于间接调用其他函数,或将函数作为参数传递给另一个函数(如 quad 或 fsolve)。例如:
f = @sin;
quad (f, 0, pi)
⇒ 2
您可以使用 feval 通过函数句柄调用函数,或者直接写上函数句柄的名称后跟参数列表。如果没有参数,则必须使用空的参数列表 ()。例如:
f = @sin;
feval (f, pi/4)
⇒ 0.70711
f (pi/4)
⇒ 0.70711
s = functions (fcn_handle) ¶返回一个结构体,其中包含关于函数句柄 fcn_handle 的信息。
结构体 s 始终包含以下三个字段:
函数名称。对于匿名函数(无名称),这将是实际的函数定义。
函数的类型。
该函数是匿名的。
该函数是私有的。
该函数重载了现有函数。
该函数是一个内置函数或 m 文件函数。
该函数是 m 文件中的一个子函数。
该函数是嵌套的。
将被调用以执行该函数的 m 文件。对于匿名函数和内置函数,此字段为空。
此外,某些函数类型可能会在其他字段中返回更多信息。
警告: functions 仅用于调试目的。其行为可能会在未来版本中发生变化,程序不应依赖于任何特定的输出格式。
hfcn = str2func (str) ¶返回从字符串 str 构造的函数句柄。
输入可以是函数的名称(例如 "sin"),也可以是定义函数的字符串(例如 "@(x) sin (x + pi)")。
编程注意事项:在大多数情况下,最好使用匿名函数语法,让 Octave 解析器来创建函数句柄,而不是使用 str2func。例如:
hfcn = @sin ; hfcn = @(x) sin (x + pi) ;
vars = symvar (str) ¶识别字符串 str 中的符号变量名称。
常见常量名称(如 i、j、pi、Inf)以及 Octave 函数(如 sin 或 plot)将被忽略。
所识别出的任何名称将以字符串元胞数组的形式返回。如果未找到变量,则数组为空。
示例:
symvar ("x^2 + y^2 == 4")
⇒ {
[1,1] = x
[2,1] = y
}
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4