9.1按函数名称调用函数

这个发烧函数允许您从包含函数名称的字符串中调用函数。这在编写需要调用用户提供的函数的函数时非常有用。这个发烧函数将要调用的函数的名称作为其第一个参数,剩余的参数将提供给该函数。

以下示例是一个简单的函数,使用发烧它使用牛顿方法找到一个变量的用户提供函数的根。

函数结果=newtrout(fname,x)#用法:newtroot(fname、x)##fname:命名函数f(x)的字符串。#x:初始猜测delta=tol=sqrt(eps);最大值=200;fx=feval(fname,x);对于i=1:maxit if(abs(fx)<tol)结果=x;returnelse fx_new=feval(fname,x+delta);deriv=(fx_new-fx)/delta;x=x-fx/deriv;fx=fx_new;endif endfor result=x;结束函数

请注意,这只是调用用户提供的函数的一个示例,不应过于重视。除了使用更健壮的算法外,任何严肃的代码都会检查所有参数的数量和类型,确保提供的函数真的是函数,等等。详见数字对象的判断函数,有关数字对象的判断函数列表,详见变量的状态,用于的描述存在作用

 
: retval = feval (name, …)

评估名为的函数name.

第一个参数之后的任何参数都作为输入传递给命名函数。例如

feval(“acos”,-1)⇒ 3.1416

调用函数acos带有参数-1’.

函数发烧也可以与任何类型的函数句柄一起使用(详见函数句柄). 从历史上看,发烧是在字符串中调用用户提供的函数的唯一方法,但从于函数句柄提供了更干净的语法,因此现在更倾向于使用它们。例如

f=@exp;发烧(f1.⇒ 2.7183f1.⇒ 2.7183

是调用所引用函数的等效方法f.如果事先无法预测f是函数句柄、字符串中的函数名或内联函数,则发烧可以使用。

类似的函数存在,用于调用用户脚本文件,这些文件不一定在用户路径上

 
: run script
: run ("script")

剧本在当前工作空间中。

驻留在Octave的加载路径中指定的目录中,并以扩展名结尾的脚本.m,只需输入其名称即可运行。对于不位于加载路径上的脚本,请使用.

文件名剧本可以是裸文件名、完全限定文件名或相对文件名,也可以带有或不带有文件扩展名。如果没有指定扩展名,Octave将首先搜索具有.m扩展名,然后返回到没有扩展名的脚本名称。

实施说明:如果剧本包括路径组件,然后首先将工作目录更改为剧本找到。接下来,执行脚本。最后返回到原始工作目录除非 剧本已指定更改目录。

详见: 路径, addpath, 来源.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号