我正在尝试使用以下循环在Julia中计算总和。
for (k_j,kk) = enumerate(k)
value=0
for (s_j,ss) = enumerate(s), (z_j,zz) = enumerate(z), (w_j,ww) = enumerate(w)
value=value+V₀[w_j,z_j,k_j,s_j]*H[s_i,s_j]*mat[w_j,w_i,z_j,z_i]*G[z_i,z_j]
end
end
这基本上是在调用特定的矩阵条目并将其相加。我试图通过reduce或mapreduce使其变得更快,更精简,但是还无法实现。
任何建议都值得赞赏, 谢谢
答案 0 :(得分:2)
我用这样的东西解决了
y=gridmake(1:ssize,1:zsize,1:wsize)
ysize=ssize*zsize*wsize
for (k_j,kk) = enumerate(k)
# value=0
# for (s_j,ss) = enumerate(s), (z_j,zz) = enumerate(z), (w_j,ww) = enumerate(w)
# value=value+V₀[w_j,z_j,k_j,s_j]*H[s_i,s_j]*mat[w_j,w_i,z_j,z_i]*G[z_i,z_j]
# end
F[k_j]=(mapreduce(y_i -> V₀[y[y_i,3],y[y_i,2],k_j,y[y_i,1]]*H[s_i,y[y_i,1]]*mat[y[y_i,3],w_i,y[y_i,2],z_i]*G[z_i,y[y_i,2]], + ,1:ysize))
end
无论如何,我愿意接受更有效的建议