2015-11-03 10 views

回答

1

取决于一点点就如何Aggregate使用函数处理它被过去,但下面应该工作

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

+0

作品对我来说,为I P通过一个Input结构来处理函数句柄。这就是我一直在寻找的。 –

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 
+0

在集合函数中,我做了很多其他计算,并且我想将sum函数作为输入参数传递,我想在集合函数中使用它。聚合函数本身不应该是总结我的值的函数。 –

+0

那么,这正是我的代码所做的,不是吗?看到我上面的例子,'sum'和'prod'函数作为输入传递 –

+0

我理解你的代码的方式,你定义工作区中的'Aggregate'函数,'Aggregate'函数用值和函数进行计算像'sum'或'prod'。但我的意图是传递一个输入参数(在我的情况'sum'函数)到另一个函数,它是在另一个脚本中定义的。在其他函数的一部分中,我想使用输入参数,sum函数进行一些计算。聚合函数本身不仅应该返回给定数组的总和或乘积。因此,solution'output = Aggregate(Input,@(x)sum(x,2)'适用于我。 –