mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-16 08:55:06 +03:00
ipa: libipa: vector: Add matrix-vector multiplication
Add an operation for multiplying a matrix with a vector. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
cbfdfa42ca
commit
01a33fedf6
2 changed files with 28 additions and 0 deletions
|
@ -123,6 +123,17 @@ namespace ipa {
|
|||
* \return The length of the vector
|
||||
*/
|
||||
|
||||
/**
|
||||
* \fn Vector<T, Rows> operator*(const Matrix<T, Rows, Cols> &m, const Vector<T, Cols> &v)
|
||||
* \brief Multiply a matrix by a vector
|
||||
* \tparam T Numerical type of the contents of the matrix and vector
|
||||
* \tparam Rows The number of rows in the matrix
|
||||
* \tparam Cols The number of columns in the matrix (= rows in the vector)
|
||||
* \param m The matrix
|
||||
* \param v The vector
|
||||
* \return Product of matrix \a m and vector \a v
|
||||
*/
|
||||
|
||||
/**
|
||||
* \fn bool operator==(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
|
||||
* \brief Compare vectors for equality
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
#include "libcamera/internal/yaml_parser.h"
|
||||
|
||||
#include "matrix.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
LOG_DECLARE_CATEGORY(Vector)
|
||||
|
@ -140,6 +142,21 @@ private:
|
|||
std::array<T, Rows> data_;
|
||||
};
|
||||
|
||||
template<typename T, unsigned int Rows, unsigned int Cols>
|
||||
Vector<T, Rows> operator*(const Matrix<T, Rows, Cols> &m, const Vector<T, Cols> &v)
|
||||
{
|
||||
Vector<T, Rows> result;
|
||||
|
||||
for (unsigned int i = 0; i < Rows; i++) {
|
||||
T sum = 0;
|
||||
for (unsigned int j = 0; j < Cols; j++)
|
||||
sum += m[i][j] * v[j];
|
||||
result[i] = sum;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename T, unsigned int Rows>
|
||||
bool operator==(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue