实现循环的快速方法



我正试图使用以下循环在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使其更快、更精简,但一直未能启动代码。

欢迎任何建议,感谢

我用类似的东西解决了它

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

不管怎样,我愿意接受更有效的建议

最新更新