Class MatrixVectorMult_FDRM
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic float
innerProduct
(float[] a, int offsetA, FMatrix1Row B, float[] c, int offsetC) scalar = AT*B*Cstatic void
mult
(FMatrix1Row A, FMatrixD1 B, 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
(FMatrix1Row A, FMatrixD1 B, 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
An alternative implementation ofmultAddTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1)
that performs well on large matrices.static void
multAddTransA_small
(FMatrix1Row A, FMatrixD1 B, 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
(FMatrix1Row A, FMatrixD1 B, FMatrixD1 C) An alternative implementation ofmultTransA_small(org.ejml.data.FMatrix1Row, org.ejml.data.FMatrixD1, org.ejml.data.FMatrixD1)
that performs well on large matrices.static void
multTransA_small
(FMatrix1Row A, FMatrixD1 B, 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.
-
Constructor Details
-
MatrixVectorMult_FDRM
public MatrixVectorMult_FDRM()
-
-
Method Details
-
mult
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.- 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 * 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.- 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 = 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.
- 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.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.- 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 + 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.
- 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.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.- 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 = AT*B*C- Parameters:
a
- (Input) vectoroffsetA
- Input) first index in vector aB
- (Input) Matrixc
- (Output) vectoroffsetC
- (Output) first index in vector c
-