传递求和函数 matlab 并添加逐列求和

Passing sum function matlab and add column wise sum

是否可以通过求和函数声明如何汇总值?那么按列还是按行?就像我不传递就调用函数:

y = sum(x,2);

我想像这样调用一个聚合函数,但是在行中操作:

Output = Aggregate(Input,@sum);

在一定程度上取决于 Aggregate 如何使用传递的函数句柄,但以下应该有效

Output = Aggregate(Input,@(x)sum(x,2));

沿第二个维度应用传递的函数:

Aggregate = @(x,fun) fun(x,2);

如您所见,这会在输入 (x) 上调用传递的函数 (fun),并使用一个固定的额外参数 2 来指示函数所沿的维度会运作。这适用于任何接受维度作为第二个参数的函数,例如 sum

示例:

>> Aggregate([1 2; 3 4], @sum)
ans =
     3
     7
>> Aggregate([1 2; 3 4], @prod)
ans =
     2
    12

沿指定维度应用传递的函数:

Aggregate = @(x,fun,dim) fun(x,dim);

示例:

>> Aggregate([1 2; 3 4], @sum, 2)
ans =
     3
     7