传递和函数matlab并添加列明智的总和

时间:2015-11-03 15:58:25

标签: arrays matlab sum function-handle

是否可以传递sum函数并声明如何汇总值?那么列或行呢?就像我调用函数而不通过:

y = sum(x,2);

我想调用这样的Aggregation函数,但是在行中运行:

Output = Aggregate(Input,@sum);

2 个答案:

答案 0 :(得分:2)

沿第二维应用传递的函数

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

如您所见,这会在输入(fun)上调用传递的函数(x),并使用固定的额外参数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

答案 1 :(得分:1)

取决于Aggregate如何使用它传递的函数句柄,但以下内容应该有效

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