Author
Keywords
R, Matlab
Review Status
In many applications the objective function is a sum of squares, that is for some vector
of length
we need to compute

In vector-oriented languages like R and Matlab, matrix computations are often much more efficient than directly squaring the elements. Hence, replacing Equation (1) by
(2)
we get the same result (up to numerical precision), but generally the computation is much faster.
R test
The following code was tested with R 2.8.1.
trials <- 10000
lenV <- 1000
aux <- rnorm(lenV)
#
t1 <- system.time(
for (i in 1:trials)
{
z1 <- sum(aux^2)
}
)
t2 <- system.time(
for (i in 1:trials)
{
z2 <- aux %*% aux
}
)
#
t3 <- system.time(
for (i in 1:trials)
{
z3 <- crossprod(aux)
}
)
Computing the inner product (method 2) already gives a considerable speedup, which rises to more than an order of magnitude with the function crossprod.
Matlab test
The following code was tested with Matlab 2007a.
trials = 10000; lenV = 1000; aux = randn(lenV,1);
tic
for i = 1:trials
z1 = sum(aux .^ 2);
end
t1 = toc;
tic
for i = 1:trials
z2 = aux' * aux;
end
t2 = toc;
tic
for i = 1:trials
z3 = dot(aux,aux);
end
t3 = toc;
Here, the function dot (which is not a built-in function) is actually slowest.
Internal Links
| Concepts |
| … |
| Tutorials |
| … |
| Tips |
| … |
| Related Articles |
| … |
External links
| References |
|
1. R Development Core Team (2008). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. http://www.R-project.org.
|
| Weblinks |
| … |