2015-11-03 30 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)'適用於我。 –