我必须用八度音程编写一个函数,形式为f(fun,x,m),其中fun是另一个函数 但我有一个问题,我该怎么办呢? (把函数作为变量)
答案 0 :(得分:4)
您可以使用“功能句柄”。
根据给出here的文章,
handle = @functionname%返回指定MATLAB®函数的句柄。
函数句柄是一个MATLAB值,它提供了一种间接调用函数的方法。您可以在调用其他函数(通常称为函数函数)时传递函数句柄。您还可以将函数句柄存储在数据结构中以供以后使用(例如,作为Handle Graphics回调)。函数句柄是标准MATLAB数据类型之一。
以下示例为内置humps
函数创建函数句柄,并将其分配给变量fhandle
。
fhandle = @humps;
现在,您可以像传递任何参数一样将句柄传递给另一个函数。此示例将刚刚创建的函数句柄传递给fminbnd
,然后在[0.3, 1]
区间内最小化。
x = fminbnd(fhandle, 0.3, 1)
x =
0.6370