我有一个用例,我需要根据用户选择的基函数数量来计算变量。例如,如果用户指定 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 中将函数作为“第一类对象”传递?
最佳答案
您正在寻找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}) 调用
。
关于MATLAB:我可以以某种方式使用函数作为第一类对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30384513/