Class MatrixVectorMult_DDRM
This class contains various types of matrix vector multiplcation operations for DMatrixRMaj
.
If a matrix has only one column or row then it is a vector. There are faster algorithms that can be used to multiply matrices by vectors. Strangely, even though the operations count smaller, the difference between this and a regular matrix multiply is insignificant for large matrices. The smaller matrices there is about a 40% speed improvement. In practice the speed improvement for smaller matrices is not noticeable unless 10s of millions of matrix multiplications are being performed.

Constructor Summary

Method Summary
Modifier and TypeMethodDescriptionstatic double
innerProduct
(double[] a, int offsetA, DMatrix1Row B, double[] c, int offsetC) scalar = A^{T}*B*Cstatic void
mult
(DMatrix1Row A, DMatrixD1 B, DMatrixD1 C) Performs a matrix vector multiply.
c = A * b
and
c = A * b^{T}
c_{i} = Sum{ j=1:n, a_{ij} * b_{j}}
where A is a matrix, b is a column or transposed row vector, and c is a column vector.static void
multAdd
(DMatrix1Row A, DMatrixD1 B, DMatrixD1 C) Performs a matrix vector multiply.
C = C + A * B
or
C = C + A * B^{T}
c_{i} = Sum{ j=1:n, c_{i} + a_{ij} * b_{j}}
where A is a matrix, B is a column or transposed row vector, and C is a column vector.static void
An alternative implementation ofmultAddTransA_small(org.ejml.data.DMatrix1Row, org.ejml.data.DMatrixD1, org.ejml.data.DMatrixD1)
that performs well on large matrices.static void
multAddTransA_small
(DMatrix1Row A, DMatrixD1 B, DMatrixD1 C) Performs a matrix vector multiply.
C = C + A^{T} * B
or
C = C^{T} + A^{T} * B^{T}
c_{i} = Sum{ j=1:n, c_{i} + a_{ji} * b_{j}}
where A is a matrix, B is a column or transposed row vector, and C is a column vector.static void
multTransA_reorder
(DMatrix1Row A, DMatrixD1 B, DMatrixD1 C) An alternative implementation ofmultTransA_small(org.ejml.data.DMatrix1Row, org.ejml.data.DMatrixD1, org.ejml.data.DMatrixD1)
that performs well on large matrices.static void
multTransA_small
(DMatrix1Row A, DMatrixD1 B, DMatrixD1 C) Performs a matrix vector multiply.
C = A^{T} * B
where B is a column vector.
or
C = A^{T} * B^{T}
where B is a row vector.

Constructor Details

MatrixVectorMult_DDRM
public MatrixVectorMult_DDRM()


Method Details

mult
Performs a matrix vector multiply.
c = A * b
and
c = A * b^{T}
c_{i} = Sum{ j=1:n, a_{ij} * b_{j}}
where A is a matrix, b is a column or transposed row vector, and c is a column vector. Parameters:
A
 A matrix that is m by n. Not modified.B
 A vector that has length n. Not modified.C
 A column vector that has length m. Modified.

multAdd
Performs a matrix vector multiply.
C = C + A * B
or
C = C + A * B^{T}
c_{i} = Sum{ j=1:n, c_{i} + a_{ij} * b_{j}}
where A is a matrix, B is a column or transposed row vector, and C is a column vector. Parameters:
A
 A matrix that is m by n. Not modified.B
 A vector that has length n. Not modified.C
 A column vector that has length m. Modified.

multTransA_small
Performs a matrix vector multiply.
C = A^{T} * B
where B is a column vector.
or
C = A^{T} * B^{T}
where B is a row vector.
c_{i} = Sum{ j=1:n, a_{ji} * b_{j}}
where A is a matrix, B is a column or transposed row vector, and C is a column vector.This implementation is optimal for small matrices. There is a huge performance hit when used on large matrices due to CPU cache issues.
 Parameters:
A
 A matrix that is m by n. Not modified.B
 A that has length m and is a column. Not modified.C
 A column vector that has length n. Modified.

multTransA_reorder
An alternative implementation ofmultTransA_small(org.ejml.data.DMatrix1Row, org.ejml.data.DMatrixD1, org.ejml.data.DMatrixD1)
that performs well on large matrices. There is a relative performance hit when used on small matrices. Parameters:
A
 A matrix that is m by n. Not modified.B
 A Vector that has length m. Not modified.C
 A column vector that has length n. Modified.

multAddTransA_small
Performs a matrix vector multiply.
C = C + A^{T} * B
or
C = C^{T} + A^{T} * B^{T}
c_{i} = Sum{ j=1:n, c_{i} + a_{ji} * b_{j}}
where A is a matrix, B is a column or transposed row vector, and C is a column vector.This implementation is optimal for small matrices. There is a huge performance hit when used on large matrices due to CPU cache issues.
 Parameters:
A
 A matrix that is m by n. Not modified.B
 A vector that has length m. Not modified.C
 A column vector that has length n. Modified.

multAddTransA_reorder
An alternative implementation ofmultAddTransA_small(org.ejml.data.DMatrix1Row, org.ejml.data.DMatrixD1, org.ejml.data.DMatrixD1)
that performs well on large matrices. There is a relative performance hit when used on small matrices. Parameters:
A
 A matrix that is m by n. Not modified.B
 A vector that has length m. Not modified.C
 A column vector that has length n. Modified.

innerProduct
scalar = A^{T}*B*C Parameters:
a
 (Input) vectoroffsetA
 Input) first index in vector aB
 (Input) Matrixc
 (Output) vectoroffsetC
 (Output) first index in vector c
