这个feval
函数允许您从包含函数名称的字符串中调用函数。这在编写需要调用用户提供的函数的函数时非常有用。这个feval
函数将要调用的函数的名称作为其第一个参数,剩余的参数将提供给该函数。
以下示例是一个简单的函数,使用feval
它使用牛顿方法找到一个变量的用户提供函数的根。
function result = newtroot (fname, x) # usage: newtroot (fname, x) # # fname : a string naming a function f(x). # x : initial guess delta = tol = sqrt (eps); maxit = 200; fx = feval (fname, x); for i = 1:maxit if (abs (fx) < tol) result = x; return; else fx_new = feval (fname, x + delta); deriv = (fx_new - fx) / delta; x = x - fx / deriv; fx = fx_new; endif endfor result = x; endfunction
请注意,这只是调用用户提供的函数的一个示例,不应过于重视。除了使用更健壮的算法外,任何严肃的代码都会检查所有参数的数量和类型,确保提供的函数真的是函数,等等。详见数字对象的判断函数,有关数字对象的判断函数列表,详见变量的状态,用于的描述exist
作用
retval =
feval (name, …)
¶评估名为的函数name.
第一个参数之后的任何参数都作为输入传递给命名函数。例如
feval ("acos", -1) ⇒ 3.1416
调用函数acos
带有参数-1’.
函数feval
也可以与任何类型的函数句柄一起使用(详见函数句柄). 从历史上看,feval
是在字符串中调用用户提供的函数的唯一方法,但从于函数句柄提供了更干净的语法,因此现在更倾向于使用它们。例如
f = @exp; feval (f, 1) ⇒ 2.7183 f (1) ⇒ 2.7183
是调用所引用函数的等效方法f.如果事先无法预测f是函数句柄、字符串中的函数名或内联函数,则feval
可以使用。
类似的函数run
存在,用于调用用户脚本文件,这些文件不一定在用户路径中
script
¶("script")
¶跑script在当前工作空间中。
驻留在Octave的加载路径中指定的目录中,并以扩展名结尾的脚本.m,只需输入其名称即可运行。对于不位于加载路径中的脚本,请使用run
.
文件名script可以是裸文件名、完全限定文件名或相对文件名,也可以带有或不带有文件扩展名。如果没有指定扩展名,Octave将首先搜索具有.m扩展名,然后返回到没有扩展名的脚本名称。
支持说明:如果script包括路径组件,然后run
首先将工作目录更改为script找到。接下来,执行脚本。最后run
返回到原始工作目录除非 script已指定更改目录。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2