2017-04-22 43 views
1

我想計算並添加梯度以多個陣列在平行:朱莉婭:添加到多個陣列並聯

a = zeros(1,3); b = zeros(1,5) 
a, b = @parallel (+) for i = 1:10 
    f(a,b) 
end 

其中f(A,B)返回a和b的梯度(這些是陣列相同大小分別爲a和b)。很明顯,上面的方法不起作用,因爲元組是不可變的,但我想不出一種方法來做到這一點,不涉及將a和b組合成更大的矩陣。有任何想法嗎?

+0

超載不同的二進制運算符,做你想做的減少。 –

+1

矢量向量做元素加法,所以如果'f(a,b)'返回'[[1,2,3],[1,2,3,4,5]]'或類似形狀的數組',那麼'+'會正確處理它。另外,'a,b = [[1,2,3],[1,2,3,4,5]]將正確地解構成'a = [1,2,3]'等等。 –

回答

1

不是最優雅,但這個工程:

function ta(t1,t2) 
    t1[1].+t2[1], t1[2].+t2[2] 
end 

a, b = @parallel (ta) for i = 1:10 
    f(a,b) 
end