org.ejml.alg.dense.mult
Class VectorVectorMult

java.lang.Object
  extended by org.ejml.alg.dense.mult.VectorVectorMult

public class VectorVectorMult
extends Object

Operations that involve multiplication of two vectors.

Author:
Peter Abeles

Constructor Summary
VectorVectorMult()
           
 
Method Summary
static void addOuterProd(double gamma, D1Matrix64F x, D1Matrix64F y, RowD1Matrix64F A)
           Adds to A ∈ ℜ m × n the results of an outer product multiplication of the two vectors.
static void householder(double gamma, D1Matrix64F u, D1Matrix64F x, D1Matrix64F y)
           Multiplies a householder reflection against a vector:

y = (I + γ u uT)x
static double innerProd(D1Matrix64F x, D1Matrix64F y)
           Computes the inner product of the two vectors.
static double innerProdA(D1Matrix64F x, D1Matrix64F A, D1Matrix64F y)
           xTAy
static double innerProdTranA(D1Matrix64F x, D1Matrix64F A, D1Matrix64F y)
           xTATy
static void mult(DenseMatrix64F x, DenseMatrix64F y, DenseMatrix64F A)
           
static void outerProd(D1Matrix64F x, D1Matrix64F y, RowD1Matrix64F A)
           Sets A ∈ ℜ m × n equal to an outer product multiplication of the two vectors.
static void rank1Update(double gamma, DenseMatrix64F A, DenseMatrix64F u, DenseMatrix64F w)
           Performs a rank one update on matrix A using vectors u and w.
static void rank1Update(double gamma, DenseMatrix64F A, DenseMatrix64F u, DenseMatrix64F w, DenseMatrix64F B)
           Performs a rank one update on matrix A using vectors u and w.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

VectorVectorMult

public VectorVectorMult()
Method Detail

mult

public static void mult(DenseMatrix64F x,
                        DenseMatrix64F y,
                        DenseMatrix64F A)
Parameters:
x -
y -
A -

innerProd

public static double innerProd(D1Matrix64F x,
                               D1Matrix64F y)

Computes the inner product of the two vectors. In geometry this is known as the dot product.

k=1:n xk * yk
where x and y are vectors with n elements.

These functions are often used inside of highly optimized code and therefor sanity checks are kept to a minimum. It is not recommended that any of these functions be used directly.

Parameters:
x - A vector with n elements. Not modified.
y - A vector with n elements. Not modified.
Returns:
The inner product of the two vectors.

innerProdA

public static double innerProdA(D1Matrix64F x,
                                D1Matrix64F A,
                                D1Matrix64F y)

xTAy

Parameters:
x - A vector with n elements. Not modified.
A - A matrix with n by m elements. Not modified.
y - A vector with m elements. Not modified.
Returns:
The results.

innerProdTranA

public static double innerProdTranA(D1Matrix64F x,
                                    D1Matrix64F A,
                                    D1Matrix64F y)

xTATy

Parameters:
x - A vector with n elements. Not modified.
A - A matrix with n by n elements. Not modified.
y - A vector with n elements. Not modified.
Returns:
The results.

outerProd

public static void outerProd(D1Matrix64F x,
                             D1Matrix64F y,
                             RowD1Matrix64F A)

Sets A ∈ ℜ m × n equal to an outer product multiplication of the two vectors. This is also known as a rank-1 operation.

A = x * y' where x ∈ ℜ m and y ∈ ℜ n are vectors.

Which is equivalent to: Aij = xi*yj

These functions are often used inside of highly optimized code and therefor sanity checks are kept to a minimum. It is not recommended that any of these functions be used directly.

Parameters:
x - A vector with m elements. Not modified.
y - A vector with n elements. Not modified.
A - A Matrix with m by n elements. Modified.

addOuterProd

public static void addOuterProd(double gamma,
                                D1Matrix64F x,
                                D1Matrix64F y,
                                RowD1Matrix64F A)

Adds to A ∈ ℜ m × n the results of an outer product multiplication of the two vectors. This is also known as a rank 1 update.

A = A + γ x * yT where x ∈ ℜ m and y ∈ ℜ n are vectors.

Which is equivalent to: Aij = Aij + γ xi*yj

These functions are often used inside of highly optimized code and therefor sanity checks are kept to a minimum. It is not recommended that any of these functions be used directly.

Parameters:
gamma - A multiplication factor for the outer product.
x - A vector with m elements. Not modified.
y - A vector with n elements. Not modified.
A - A Matrix with m by n elements. Modified.

householder

public static void householder(double gamma,
                               D1Matrix64F u,
                               D1Matrix64F x,
                               D1Matrix64F y)

Multiplies a householder reflection against a vector:

y = (I + γ u uT)x

The Householder reflection is used in some implementations of QR decomposition.

Parameters:
u - A vector. Not modified.
x - a vector. Not modified.
y - Vector where the result are written to.

rank1Update

public static void rank1Update(double gamma,
                               DenseMatrix64F A,
                               DenseMatrix64F u,
                               DenseMatrix64F w,
                               DenseMatrix64F B)

Performs a rank one update on matrix A using vectors u and w. The results are stored in B.

B = A + γ u wT

This is called a rank1 update because the matrix u wT has a rank of 1. Both A and B can be the same matrix instance, but there is a special rank1Update for that.

Parameters:
gamma - A scalar.
A - A m by m matrix. Not modified.
u - A vector with m elements. Not modified.
w - A vector with m elements. Not modified.
B - A m by m matrix where the results are stored. Modified.

rank1Update

public static void rank1Update(double gamma,
                               DenseMatrix64F A,
                               DenseMatrix64F u,
                               DenseMatrix64F w)

Performs a rank one update on matrix A using vectors u and w. The results are stored in A.

A = A + γ u wT

This is called a rank1 update because the matrix u wT has a rank of 1.

Parameters:
gamma - A scalar.
A - A m by m matrix. Modified.
u - A vector with m elements. Not modified.


Copyright © 2012. All Rights Reserved.