KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am looking for a fast computation in R of the trace (trace(A)) of a matrix A = B' C. The fastest way I can think of is the following: set.seed(123) n <- 10^6 B <- matrix(rnorm(n), ncol=sqrt(n)) C <- matrix(rnorm(n), ncol=sqrt(n)) ptm <- proc.time() A <- tcrossprod(B,C) traceA <- sum(diag(A)) proc.time() - ptm I am asking myself if there is a faster way (especially if matrix B and matrix C are symmetric or even idempotent). I mean with the line A <- tcrossprod(B,C) I am computing the whole matrix A, although I just need the sum of the diagonal elements of the matrix (trace(A)). To speed this up, I thought of a parallel computation for tcrossprod , but I havn't found an implementation for this (additionally I don't know if this would be a good idea). Does someone have an idea?
Tags (comma-separated)
Save Edits
Cancel