Hi:

Another alternative is

crossprod(A)

which is meant to produce an optimized A'A  (not the vector cross-product
from intro physics :)

Example:

A <- matrix(rpois(9, 10), ncol = 3)
> A
     [,1] [,2] [,3]
[1,]    6   10   14
[2,]    7    5   16
[3,]   12   16   10
> t(A) %*% A
     [,1] [,2] [,3]
[1,]  229  287  316
[2,]  287  381  380
[3,]  316  380  552
> crossprod(A)
     [,1] [,2] [,3]
[1,]  229  287  316
[2,]  287  381  380
[3,]  316  380  552

A little test:

f <- function(A) {
     U <- crossprod(A)
     diag(U) <- 0
     U
  }
g <- function(A) {
     U <- t(A) %*% A
     diag(U) <- 0
     U
  }

# matrix multiplication on a 100 x 10 matrix
> system.time(replicate(1000, g(matrix(rpois(1000, 10), ncol = 10))))
   user  system elapsed
   0.24    0.00    0.23

# crossprod
> system.time(replicate(1000, f(matrix(rpois(1000, 10), ncol = 10))))
   user  system elapsed
   0.20    0.00    0.21

# matrix multiplication on a 10 x 100 matrix
> system.time(replicate(1000, g(matrix(rpois(1000, 10), ncol = 100))))
   user  system elapsed
   1.72    0.17    1.89

# crossprod
> system.time(replicate(1000, f(matrix(rpois(1000, 10), ncol = 100))))
   user  system elapsed
   0.47    0.09    0.56


HTH,
Dennis

On Thu, Nov 11, 2010 at 5:19 PM, Michael Bedward
<michael.bedward@gmail.com>wrote:

> On 12 November 2010 02:21, David Winsemius <dwinsemius@comcast.net> wrote:
> >
> >> The fastest and easiest solution is
> >>
> >>  t(A) %*% A
> >
> > That is really elegant. (Wish I could remember my linear algebra lessons
> as
> > well from forty years ago.) I checked it against the specified output and
> > found that with one exception that the OP had planned for the diagonal to
> be
> > filled with zeroes. So that could be completed by a simple modification:
> >
> > temp <- t(A) %*% A
> > diag(temp) <- 0
> > temp
> >
>
> Excellent solution ! Small is beautiful :)
>
> Michael
>
> ______________________________________________
> R-help@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.
>

	[[alternative HTML version deleted]]

