问题 如何在MATLAB中将函数作为输出值返回?


我正在写一个函数 makeFunction(data)。我希望它返回一个函数,而不是矩阵,向量或标量。我该怎么做呢?


3717
2018-05-25 02:13


起源



答案:


使用功能句柄。

function f = functionReturner(u)
% creates the function x.^u to return as an example
f = @(x) x.^u;

如果我保存这个函数,然后调用functionReturner,参数本身就是一个函数。

f = functionReturner(3);
f(2.5)
ans =
       15.625

你可以很容易地验证15.625确实是2.5 ^ 3。


16
2018-05-25 02:21



有没有办法在不使用匿名函数的情况下执行此操作? - Will
@Will - 我不知道你要解决什么问题,甚至不知道你正在使用的MATLAB版本。你有没有理由对答案施加限制?如果你有一些别有用心的动机,请告诉我们,而不是让我们都猜测。有些日子,读水晶球是如此困难。
如果匿名部分困扰您,子函数的常规函数​​句柄也将起作用。 - Peter
@谢谢你,彼得。 - Will
@woodchips只是好奇...... - Will


答案:


使用功能句柄。

function f = functionReturner(u)
% creates the function x.^u to return as an example
f = @(x) x.^u;

如果我保存这个函数,然后调用functionReturner,参数本身就是一个函数。

f = functionReturner(3);
f(2.5)
ans =
       15.625

你可以很容易地验证15.625确实是2.5 ^ 3。


16
2018-05-25 02:21



有没有办法在不使用匿名函数的情况下执行此操作? - Will
@Will - 我不知道你要解决什么问题,甚至不知道你正在使用的MATLAB版本。你有没有理由对答案施加限制?如果你有一些别有用心的动机,请告诉我们,而不是让我们都猜测。有些日子,读水晶球是如此困难。
如果匿名部分困扰您,子函数的常规函数​​句柄也将起作用。 - Peter
@谢谢你,彼得。 - Will
@woodchips只是好奇...... - Will