是否可以传递 sum 函数并声明如何汇总值?所以列或行明智?就像我在没有传递的情况下调用函数:
y = sum(x,2);
我想调用这样的聚合函数,但在行中操作:
Output = Aggregate(Input,@sum);
是否可以传递 sum 函数并声明如何汇总值?所以列或行明智?就像我在没有传递的情况下调用函数:
y = sum(x,2);
我想调用这样的聚合函数,但在行中操作:
Output = Aggregate(Input,@sum);
要沿第二维应用传递的函数:
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
取决于如何Aggregate
使用它正在传递的函数句柄,但以下应该有效
Output = Aggregate(Input,@(x)sum(x,2));