public class MatrixVectorMult_FDRM
extends java.lang.Object
This class contains various types of matrix vector multiplcation operations for FMatrixRMaj
.
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 and Description |
---|
MatrixVectorMult_FDRM() |
Modifier and Type | Method and Description |
---|---|
static void |
mult(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
c = A * b and c = A * bT ci = Sum{ j=1:n, aij * bj} where A is a matrix, b is a column or transposed row vector, and c is a column vector. |
static void |
multAdd(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = C + A * B or C = C + A * BT ci = Sum{ j=1:n, ci + aij * bj} where A is a matrix, B is a column or transposed row vector, and C is a column vector. |
static void |
multAddTransA_reorder(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
An alternative implementation of
multAddTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1) that performs well on large
matrices. |
static void |
multAddTransA_small(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = C + AT * B or C = CT + AT * BT ci = Sum{ j=1:n, ci + aji * bj} where A is a matrix, B is a column or transposed row vector, and C is a column vector. |
static void |
multTransA_reorder(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
An alternative implementation of
multTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1) that performs well on large
matrices. |
static void |
multTransA_small(org.ejml.data.FMatrix1Row A,
org.ejml.data.FMatrixD1 B,
org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = AT * B where B is a column vector. or C = AT * BT where B is a row vector. |
public static void mult(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
c = A * b
and
c = A * bT
ci = Sum{ j=1:n, aij * bj}
where A is a matrix, b is a column or transposed row vector, and c is a column vector.
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.public static void multAdd(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = C + A * B
or
C = C + A * BT
ci = Sum{ j=1:n, ci + aij * bj}
where A is a matrix, B is a column or transposed row vector, and C is a column vector.
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.public static void multTransA_small(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = AT * B
where B is a column vector.
or
C = AT * BT
where B is a row vector.
ci = Sum{ j=1:n, aji * bj}
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.
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.public static void multTransA_reorder(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
multTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1)
that performs well on large
matrices. There is a relative performance hit when used on small matrices.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.public static void multAddTransA_small(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
Performs a matrix vector multiply.
C = C + AT * B
or
C = CT + AT * BT
ci = Sum{ j=1:n, ci + aji * bj}
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.
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.public static void multAddTransA_reorder(org.ejml.data.FMatrix1Row A, org.ejml.data.FMatrixD1 B, org.ejml.data.FMatrixD1 C)
multAddTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1)
that performs well on large
matrices. There is a relative performance hit when used on small matrices.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.