实现循环的快速方法

时间:2018-12-17 14:04:40

标签: loops mapreduce julia reduce

我正在尝试使用以下循环在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使其变得更快,更精简,但是还无法实现。

任何建议都值得赞赏, 谢谢

1 个答案:

答案 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

无论如何,我愿意接受更有效的建议