我有一个用例,我需要根据用户选择的基函数数来计算变量。例如,如果用户指定了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?
答案 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})
致电。