MATLAB:我可以以某种方式使用函数作为第一类对象吗?

时间:2015-05-21 21:18:20

标签: matlab function function-pointers

我有一个用例,我需要根据用户选择的基函数数来计算变量。例如,如果用户指定了num_basis_funcs = 4

y = const() + linear(x) + rational1(x) + sin(x)
      1          2            3            4

如果用户指定num_basis_funcs = 2,则y将仅计算为:

y = const() + linear(x)
      1          2        

如果用户指定num_basis_funcs = 1,则y将仅计算为:

y = const()
      1       

我仅为了举例而选择了一些简单的基函数;足以说明在完整的应用程序中,这些基本功能将由用户定义。

来自Python,我想到的是制作一个功能列表,我会根据用户输入有选择地应用这些功能。从C ++的角度来看,我想到的是使用函数指针来传递应该执行的函数。

一般来说,我如何将函数作为"第一类对象"在MATLAB?

1 个答案:

答案 0 :(得分:2)

您正在寻找function handles。我建议传递一个函数句柄的单元格数组,并在循环中评估它们,如下所示:

function out = evalFns(x, fnCell)
out = 0;
for iFn = 1:length(fnCell)
    out = out + fnCell{iFn}(x);
end

您可以通过y = evalFns(x, {@const, @linear, @rational, @sin})致电。