Fastest way for multiplying a matrix to a vector

后端 未结 3 1287
终归单人心
终归单人心 2020-12-14 03:50

I have a matrix mat and a vector v. I would like to multiply first column of matrix matby first element of vector v and m

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-14 04:29

    Recycling can make it faster but you recycle within columns, not across, so just transpose and transpose back.

    t( t(mat) * v )
    

    This should be faster than sweep or %*%.

    microbenchmark(mat %*% diag(v),sweep(mat, 2, v, FUN = "*"), t(t(mat)*v))
    Unit: milliseconds
                expr       min        lq    median        uq      max neval
                 %*% 150.47301 152.16306 153.17379 161.75416 281.3315   100
               sweep  35.94029  42.67210  45.53666  48.07468 168.3728   100
       t(t(mat) * v)  16.50813  23.41549  26.31602  29.44008 160.1651   100
    

提交回复
热议问题