[R] fast cumulative matrix multiplication

David Winsemius dwinsemius at comcast.net
Fri Oct 30 00:10:02 CET 2009


This morning I did 10,000 replicates of multiplying 3 small matrices  
using a for-loop andalso with Reduce and found that the for-loop was  
roughly twice as fast, so I didn't post.

 > m1 <- matrix(1:9, 3)
 > m2 <- matrix(1:9, 3)
 > m3 <- matrix(1:9, 3)
 > system.time(replicate(1000, Reduce("%*%" , list(m1,m2,m3) ) ) )
    user  system elapsed
   0.046   0.001   0.053
 > mlist <- list(m1,m2,m3)
 > m0 <- diag(1, nrow=3,ncol=3)
 > system.time(replicate(1000, for (i in seq_along(mlist) ) {m0 <- m0  
%*% mlist[[i]] } ) )
    user  system elapsed
   0.025   0.001   0.033

-- 
David

On Oct 29, 2009, at 6:54 PM, Gabor Grothendieck wrote:

> Don't know if its any faster but try this:
>
>  Reduce("%*%", list(M1, M2, M3), accumulate = TRUE)
>
>
> On Thu, Oct 29, 2009 at 9:56 AM, Todd Schneider
> <todd.w.schneider at gmail.com> wrote:
>> Hi all,
>>
>> I am looking for a function like cumprod() that works for matrix
>> multiplication.
>>
>> In other words, I have matrices [M1, M2, ..., Mn], and I want to  
>> calculate
>> [M1, M1%*%M2, M1%*%M2%*%M3, ..., M1%*%...%*%Mn] as quickly as  
>> possible.
>> Right now I'm using a for() loop but it seems like there should be  
>> a faster
>> way.
>>
>> Any help is appreciated!
>>
>> Thanks,
>>
>> Todd Schneider
>> todd.w.schneider at gmail.com
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list