1

是否可以传递 sum 函数并声明如何汇总值?所以列或行明智?就像我在没有传递的情况下调用函数:

y = sum(x,2);

我想调用这样的聚合函数,但在行中操作:

Output = Aggregate(Input,@sum);
4

2 回答 2

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
于 2015-11-03T16:20:29.090 回答
1

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

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

于 2015-11-03T16:10:47.557 回答