Element-wise multiplication
On 4/16/05, GiusVa <sigakernel at yahoo.com> wrote:
Dear members, The code I am writing heavily use element-wise multiplication of matrix and vectors, e.g. X, is nxm matrix e, is nx1 matrix Doing Z=X*e[,], I obtain a nxm matrix, Z, where each column of X is multiplied (element-wise) by e. Is this the best way to achieve the result I want? By best way, I mean the fastest way. By profiling my code, 45% of the time is spent by "*" and even a 30% speedup in obtaining Z would greatly benefit the total speed of the code. Aby suggestion is greatly appreciated. |Giuseppe Ragusa |University of California, San Diego
Try this:
mm <- matrix(1, 1000, 1000) ee <- matrix(1:100,nc=1)
system.time(mm*ee[,], TRUE)
[1] 0.26 0.02 0.28 NA NA
system.time(mm*c(ee), TRUE)
[1] 0.07 0.00 0.07 NA NA
# if you have to do it multiple times with same ee: cee <- c(ee) system.time(mm*cee, TRUE)
[1] 0.06 0.00 0.06 NA NA