我想定义一个这样的函数:
function f = f1(fun,a,b,c)
f = c*fun(a+b);
Run Code Online (Sandbox Code Playgroud)
这fun是我在使用函数时会传递的一些函数f.我怎样才能在Matlab中做到这一点?
小智 6
你试过吗?学习像matlab这样的工具的最好方法就是尝试一下!
实际上,您甚至不需要创建m文件功能.我会在这里使用函数句柄.
fun = @(x) sin(x);
f1 = @(f,a,b,c) c*f(a+b);
f1(fun,2,3,4)
ans =
-3.8357
Run Code Online (Sandbox Code Playgroud)
我本可以将f1定义为m文件函数,但这需要我保存文件.何必?
您正在寻找的是功能句柄.
您可以sqrt通过在函数名前面放置"at"符号('@')来获取函数的函数句柄(在下面的例子中):
a = 1;
b = 2;
c = 3;
fun = @sqrt; % obtain the function handle of sqrt()
f = f1(fun, a,b,c); % pass the function handle of sqrt() into your function f1().
Run Code Online (Sandbox Code Playgroud)
使用时fun,就好像使用该sqrt功能一样.
有关更多详细信息,您还可以参考另一个Stackoverflow问题:MATLAB中的函数句柄