2017-04-22 47 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