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

标签 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 中将函数作为“第一类对象”传递?

最佳答案

您正在寻找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/

相关文章:

matlab - 为每个图像执行与新向量的卷积的最佳方法?

lambda 函数引用封闭循环中的变量时的 javascript 作用域问题

c++ - 通过参数传递 lambda(无函数类型模板)

Python根据输入切换输出

c++ - 在 cpp 文件中正确使用函数定义的命名空间

c++指向函数赋值的指针

matlab - 在 Matlab 中对列进行排序

两点之间的Matlab角度

matlab - 将凸包转换为二进制掩码

php - 如何将 PHP 变量名传递给 Javascript 函数