Visual Servoing Platform  version 3.6.1 under development (2024-04-22)
vpArray2D< Type > Class Template Reference

#include <visp3/core/vpArray2D.h>

Public Member Functions

 vpArray2D ()
 
 vpArray2D (const vpArray2D< Type > &A)
 
 vpArray2D (unsigned int r, unsigned int c)
 
 vpArray2D (unsigned int r, unsigned int c, Type val)
 
 vpArray2D (const std::vector< Type > &vec, unsigned int r=0, unsigned int c=0)
 
virtual ~vpArray2D ()
 

Public Attributes

Type * data
 

Protected Attributes

unsigned int rowNum
 
unsigned int colNum
 
Type ** rowPtrs
 
unsigned int dsize
 

Related Functions

(Note that these are not member functions.)

enum  vpGEMMmethod
 
template<>
bool operator== (const vpArray2D< double > &A) const
 
template<>
bool operator== (const vpArray2D< float > &A) const
 
template<class Type >
bool operator!= (const vpArray2D< Type > &A) const
 
void vpGEMM (const vpArray2D< double > &A, const vpArray2D< double > &B, const double &alpha, const vpArray2D< double > &C, const double &beta, vpArray2D< double > &D, const unsigned int &ops=0)
 

Inherited functionalities from vpArray2D

std::ostream & operator<< (std::ostream &s, const vpArray2D< Type > &A)
 
unsigned int getCols () const
 
Type getMaxValue () const
 
Type getMinValue () const
 
unsigned int getRows () const
 
unsigned int size () const
 
void resize (unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true)
 
void reshape (unsigned int nrows, unsigned int ncols)
 
void insert (const vpArray2D< Type > &A, unsigned int r, unsigned int c)
 
bool operator== (const vpArray2D< Type > &A) const
 
bool operator!= (const vpArray2D< Type > &A) const
 
vpArray2D< Type > & operator= (Type x)
 
vpArray2D< Type > & operator= (const vpArray2D< Type > &A)
 
Type * operator[] (unsigned int i)
 
Type * operator[] (unsigned int i) const
 
vpArray2D< Type > hadamard (const vpArray2D< Type > &m) const
 
vpArray2D< Type > t () const
 

Inherited I/O from vpArray2D with Static Public Member Functions

static void insert (const vpArray2D< Type > &A, const vpArray2D< Type > &B, vpArray2D< Type > &C, unsigned int r, unsigned int c)
 
vpArray2D< Type > insert (const vpArray2D< Type > &A, const vpArray2D< Type > &B, unsigned int r, unsigned int c)
 
static bool load (const std::string &filename, vpArray2D< Type > &A, bool binary=false, char *header=nullptr)
 
static bool loadYAML (const std::string &filename, vpArray2D< Type > &A, char *header=nullptr)
 
static bool save (const std::string &filename, const vpArray2D< Type > &A, bool binary=false, const char *header="")
 
static bool saveYAML (const std::string &filename, const vpArray2D< Type > &A, const char *header="")
 
static vpArray2D< Type > conv2 (const vpArray2D< Type > &M, const vpArray2D< Type > &kernel, const std::string &mode)
 
static void conv2 (const vpArray2D< Type > &M, const vpArray2D< Type > &kernel, vpArray2D< Type > &res, const std::string &mode)
 
template<class T >
void from_json (const nlohmann::json &j, vpArray2D< T > &array)
 
template<class T >
void to_json (nlohmann::json &j, const vpArray2D< T > &array)
 

Detailed Description

template<class Type>
class vpArray2D< Type >

Implementation of a generic 2D array used as base class for matrices and vectors.

This class implements a 2D array as a template class and all the basic functionalities common to matrices and vectors. More precisely:

The code below shows how to create a 2-by-3 array of doubles, set the element values and access them:

#include <visp3/code/vpArray2D.h
int main()
{
vpArray2D<float> a(2, 3);
a[0][0] = -1; a[0][1] = -2; a[0][2] = -3;
a[1][0] = 4; a[1][1] = 5.5; a[1][2] = 6;
std::cout << "a:" << std::endl;
for (unsigned int i = 0; i < a.getRows(); ++i) {
for (unsigned int j = 0; j < a.getCols(); ++j) {
std::cout << a[i][j] << " ";
}
std::cout << std::endl;
}
}

Once build, this previous code produces the following output:

a:
-1 -2 -3
4 5.5 6

If ViSP is build with c++11 enabled, you can do the same using:

#include <visp3/code/vpArray2D.h
int main()
{
vpArray2D<float> a{ {-1, -2, -3}, {4, 5.5, 6.0f} };
std::cout << "a:\n" << a << std::endl;
}

The array could also be initialized using operator=(const std::initializer_list< std::initializer_list< Type > > &)

int main()
{
a = { {-1, -2, -3}, {4, 5.5, 6.0f} };
}

You can also use reshape() function:

#include <visp3/code/vpArray2D.h
int main()
{
vpArray2D<float> a{ -1, -2, -3, 4, 5.5, 6.0f };
a.reshape(2, 3);
}
Examples
testArray2D.cpp, testMatrixInitialization.cpp, testRealSense2_T265_undistort.cpp, testUndistortImage.cpp, tutorial-apriltag-detector-live-T265-realsense.cpp, and tutorial-hsv-range-tuner.cpp.

Definition at line 125 of file vpArray2D.h.

Constructor & Destructor Documentation

◆ vpArray2D() [1/5]

template<class Type >
vpArray2D< Type >::vpArray2D ( )
inline

Basic constructor of a 2D array. Number of columns and rows are set to zero.

Definition at line 139 of file vpArray2D.h.

◆ vpArray2D() [2/5]

template<class Type >
vpArray2D< Type >::vpArray2D ( const vpArray2D< Type > &  A)
inline

Copy constructor of a 2D array.

Definition at line 139 of file vpArray2D.h.

◆ vpArray2D() [3/5]

template<class Type >
vpArray2D< Type >::vpArray2D ( unsigned int  r,
unsigned int  c 
)
inline

Constructor that initializes a 2D array with 0.

Parameters
r: Array number of rows.
c: Array number of columns.

Definition at line 139 of file vpArray2D.h.

◆ vpArray2D() [4/5]

template<class Type >
vpArray2D< Type >::vpArray2D ( unsigned int  r,
unsigned int  c,
Type  val 
)
inline

Constructor that initialize a 2D array with val.

Parameters
r: Array number of rows.
c: Array number of columns.
val: Each element of the array is set to val.

Definition at line 139 of file vpArray2D.h.

◆ vpArray2D() [5/5]

template<class Type >
vpArray2D< Type >::vpArray2D ( const std::vector< Type > &  vec,
unsigned int  r = 0,
unsigned int  c = 0 
)
inline

Constructor that initialize a 2D array from a std::vector.

  • When c = 0, create a colum vector with dimension (data.size, 1)
  • When r = 0, create a row vector with dimension (1, data.size)
  • Otherwise create an array with dimension (r, c)
Parameters
r: Array number of rows.
c: Array number of columns.
vec: Data used to initialize the 2D array.

Definition at line 139 of file vpArray2D.h.

◆ ~vpArray2D()

template<class Type >
virtual vpArray2D< Type >::~vpArray2D ( )
inlinevirtual

Destructor that deallocate memory.

Definition at line 139 of file vpArray2D.h.

Member Function Documentation

◆ conv2() [1/2]

template<class Type >
vpArray2D< Type > vpArray2D< Type >::conv2 ( const vpArray2D< Type > &  M,
const vpArray2D< Type > &  kernel,
const std::string &  mode 
)
static

Perform a 2D convolution similar to Matlab conv2 function: $ M \star kernel $.

Parameters
M: First matrix.
kernel: Second matrix.
mode: Convolution mode: "full" (default), "same", "valid".
Convolution mode: full, same, valid (image credit: Theano doc).
Note
This is a very basic implementation that does not use FFT.

Definition at line 1143 of file vpArray2D.h.

Referenced by vpImageFilter::getSobelKernelY().

◆ conv2() [2/2]

template<class Type >
void vpArray2D< Type >::conv2 ( const vpArray2D< Type > &  M,
const vpArray2D< Type > &  kernel,
vpArray2D< Type > &  res,
const std::string &  mode 
)
static

Perform a 2D convolution similar to Matlab conv2 function: $ M \star kernel $.

Parameters
M: First array.
kernel: Second array.
res: Result.
mode: Convolution mode: "full" (default), "same", "valid".
Convolution mode: full, same, valid (image credit: Theano doc).
Note
This is a very basic implementation that does not use FFT.

Definition at line 1150 of file vpArray2D.h.

References vpArray2D< Type >::data, vpArray2D< Type >::getCols(), vpArray2D< Type >::getRows(), vpArray2D< Type >::insert(), and vpArray2D< Type >::resize().

◆ getCols()

template<class Type >
unsigned int vpArray2D< Type >::getCols ( ) const
inline

Return the number of columns of the 2D array.

See also
getRows(), size()
Examples
testArray2D.cpp.

Definition at line 327 of file vpArray2D.h.

References vpArray2D< Type >::colNum.

Referenced by vpMatrix::add2Matrices(), vpMatrix::add2WeightedMatrices(), vpQuadProg::checkDimensions(), vpSubMatrix::checkParentStatus(), vpSubRowVector::checkParentStatus(), vpLinProg::colReduction(), vpServo::computeControlLaw(), vpMatrix::computeCovarianceMatrix(), vpMatrix::computeHLM(), vpServo::computeInteractionMatrix(), vpMbTracker::computeJTR(), vpImageFilter::computePartialDerivatives(), vpServo::computeProjectionOperators(), vpMbGenericTracker::computeVVS(), vpMbTracker::computeVVSPoseEstimation(), vpArray2D< Type >::conv2(), vpImageFilter::filter(), vpQuadProg::fromCanonicalCost(), vpImageSimulator::getImage(), vpImageFilter::getScharrKernelX(), vpImageFilter::getSobelKernelX(), vpImageFilter::getSobelKernelY(), vpArray2D< Type >::hadamard(), vpColVector::hadamard(), vpMatrix::hadamard(), vpMatrix::init(), vpRowVector::init(), vpSubMatrix::init(), vpSubRowVector::init(), vpTemplateTrackerSSDInverseCompositional::initCompInverse(), vpCameraParameters::initFromCalibrationMatrix(), vpCircleHoughTransform::initGradientFilters(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpRowVector::insert(), vpHomography::inverse(), vpMatrix::inverseByCholeskyLapack(), vpMatrix::juxtaposeMatrices(), vpMatrix::kron(), vpMeEllipse::leastSquareRobust(), vpRowVector::mean(), vpMatrix::mult2Matrices(), vpMatrix::multMatrixVector(), vpForceTwistMatrix::operator*(), vpRotationMatrix::operator*(), vpRowVector::operator*(), vpVelocityTwistMatrix::operator*(), vpColVector::operator*(), vpTranslationVector::operator*(), vpMatrix::operator*(), vpRowVector::operator+(), vpMatrix::operator+=(), vpRowVector::operator+=(), vpRowVector::operator-(), vpMatrix::operator-=(), vpRowVector::operator-=(), vpMatrix::operator=(), vpSubColVector::operator=(), vpSubMatrix::operator=(), vpHomography::operator=(), vpColVector::operator=(), vpRotationMatrix::operator=(), vpRowVector::operator=(), vpSubRowVector::operator=(), vpMatrix::printSize(), vpIoTools::readConfigVar(), vpColVector::reshape(), vpRowVector::reshape(), vpLinProg::rowReduction(), vpArray2D< Type >::save(), vpArray2D< Type >::saveYAML(), vpServo::secondaryTask(), vpServo::secondaryTaskJointLimitAvoidance(), vpQuadProg::solveByProjection(), vpLinProg::solveLP(), vpQuadProg::solveQP(), vpQuadProg::solveQPe(), vpQuadProg::solveQPi(), vpQuadProg::solveSVDorQR(), vpMatrix::stack(), vpRowVector::stack(), vpMatrix::stackRows(), vpMatrix::sub2Matrices(), vpMatrix::svdEigen3(), vp::visp2eigen(), vpColVector::vpColVector(), vpRowVector::vpRowVector(), and vpImageTools::warpImage().

◆ getMaxValue()

template<class Type >
Type vpArray2D< Type >::getMaxValue

Return the array max value.

Definition at line 1096 of file vpArray2D.h.

◆ getMinValue()

template<class Type >
Type vpArray2D< Type >::getMinValue

Return the array min value.

Definition at line 1079 of file vpArray2D.h.

◆ getRows()

template<class Type >
unsigned int vpArray2D< Type >::getRows ( ) const
inline

Return the number of rows of the 2D array.

See also
getCols(), size()
Examples
testArray2D.cpp.

Definition at line 337 of file vpArray2D.h.

References vpArray2D< Type >::rowNum.

Referenced by vpMatrix::add2Matrices(), vpMatrix::add2WeightedMatrices(), vpLinProg::allClose(), vpLinProg::allGreater(), vpLinProg::allLesser(), vpLinProg::allZero(), vpQuadProg::checkDimensions(), vpSubColVector::checkParentStatus(), vpSubMatrix::checkParentStatus(), vpLinProg::colReduction(), vpServo::computeControlLaw(), vpMatrix::computeCovarianceMatrix(), vpServo::computeError(), vpMatrix::computeHLM(), vpServo::computeInteractionMatrix(), vpMbTracker::computeJTR(), vpPtu46::computeMGD(), vpImageFilter::computePartialDerivatives(), vpMbDepthDenseTracker::computeVVS(), vpMbDepthNormalTracker::computeVVS(), vpMbKltTracker::computeVVS(), vpMbEdgeTracker::computeVVS(), vpMbEdgeKltTracker::computeVVS(), vpMbGenericTracker::computeVVS(), vpMbTracker::computeVVSCheckLevenbergMarquardt(), vpMbEdgeTracker::computeVVSFirstPhasePoseEstimation(), vpMbDepthDenseTracker::computeVVSInteractionMatrixAndResidu(), vpMbTracker::computeVVSPoseEstimation(), vpMbEdgeTracker::computeVVSWeights(), vpMbTracker::computeVVSWeights(), vpArray2D< Type >::conv2(), vpMatrix::createDiagonalMatrix(), vpColVector::crossProd(), vpDot2::defineDots(), vpMatrix::diag(), vpProjectionDisplay::display(), vpColVector::dotProd(), vpGenericFeature::error(), vpImageFilter::filter(), vpQuadProg::fromCanonicalCost(), vpBiclops::get_eJe(), vpPtu46::get_eJe(), vpBiclops::get_fJe(), vpPtu46::get_fJe(), vpBiclops::get_fMe(), vpGenericFeature::get_s(), vpBasicFeature::getDimension(), vpImageSimulator::getImage(), vpAfma6::getInverseKinematics(), vpViper::getInverseKinematicsWrist(), vpImageFilter::getScharrKernelX(), vpImageFilter::getSobelKernelX(), vpImageFilter::getSobelKernelY(), vpArray2D< Type >::hadamard(), vpColVector::hadamard(), vpMatrix::hadamard(), vpColVector::init(), vpMatrix::init(), vpSubColVector::init(), vpSubMatrix::init(), vpTemplateTrackerSSDInverseCompositional::initCompInverse(), vpCameraParameters::initFromCalibrationMatrix(), vpCircleHoughTransform::initGradientFilters(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpGenericFeature::interaction(), vpHomography::inverse(), vpMatrix::inverseByCholeskyLapack(), vpMatrix::inverseByQRLapack(), vpColVector::invSort(), vpMatrix::juxtaposeMatrices(), vpMatrix::kernel(), vpScale::KernelDensity(), vpScale::KernelDensityGradient(), vpMatrix::kron(), vpMeEllipse::leastSquare(), vpColVector::mean(), vpScale::MeanShift(), vpRobust::MEstimator(), vpMatrix::mult2Matrices(), vpMatrix::multMatrixVector(), vpHomogeneousMatrix::operator*(), vpRowVector::operator*(), vpForceTwistMatrix::operator*(), vpRotationMatrix::operator*(), vpVelocityTwistMatrix::operator*(), vpMatrix::operator*(), vpColVector::operator+(), vpMatrix::operator+=(), vpColVector::operator+=(), vpColVector::operator-(), vpMatrix::operator-=(), vpColVector::operator-=(), vpMatrix::operator=(), vpRGBa::operator=(), vpRGBf::operator=(), vpSubMatrix::operator=(), vpSubRowVector::operator=(), vpHomography::operator=(), vpColVector::operator=(), vpRotationMatrix::operator=(), vpRowVector::operator=(), vpSubColVector::operator=(), vpPlot::plot(), vpPose::poseVirtualVSrobust(), vpKalmanFilter::prediction(), vpMatrix::printSize(), vpLine::projection(), vpIoTools::readConfigVar(), vpColVector::reshape(), vpRowVector::reshape(), vpLinProg::rowReduction(), vpArray2D< Type >::save(), vpArray2D< Type >::saveYAML(), vpGenericFeature::set_s(), vpQuadProg::setEqualityConstraint(), vpGenericFeature::setError(), vpMbTracker::setEstimatedDoF(), vpGenericFeature::setInteractionMatrix(), vpSimulatorAfma6::setJointLimit(), vpSimulatorViper850::setJointLimit(), vpRobotAfma4::setPosition(), vpRobotBiclops::setVelocity(), vpRobotPololuPtu::setVelocity(), vpRobotPtu46::setVelocity(), vpRobotAfma4::setVelocity(), vpSimulatorAfma6::setVelocity(), vpSimulatorViper850::setVelocity(), vpLine::setWorldCoordinates(), vpLinProg::simplex(), vpRobust::simultMEstimator(), vpColVector::skew(), vpQuadProg::solveByProjection(), vpLinProg::solveLP(), vpQuadProg::solveQP(), vpQuadProg::solveQPe(), vpQuadProg::solveQPi(), vpQuadProg::solveSVDorQR(), vpColVector::sort(), vpColVector::stack(), vpMatrix::stack(), vpMatrix::stackRows(), vpMatrix::sub2Matrices(), vpMatrix::svdEigen3(), vp::visp2eigen(), vpColVector::vpColVector(), vpRowVector::vpRowVector(), vpImageTools::warpImage(), and vpImageTools::warpLinear().

◆ hadamard()

template<class Type >
vpArray2D< Type > vpArray2D< Type >::hadamard ( const vpArray2D< Type > &  m) const

Compute the Hadamard product (element wise matrix multiplication).

Parameters
m: Second matrix;
Returns
m1.hadamard(m2) The Hadamard product : $ m1 \circ m2 = (m1 \circ m2)_{i,j} = (m1)_{i,j} (m2)_{i,j} $
Examples
testArray2D.cpp.

Definition at line 1116 of file vpArray2D.h.

References vpArray2D< Type >::data, vpException::dimensionError, vpArray2D< Type >::getCols(), vpArray2D< Type >::getRows(), and vpArray2D< Type >::resize().

◆ insert() [1/2]

template<class Type >
vpArray2D< Type > vpArray2D< Type >::insert ( const vpArray2D< Type > &  A,
const vpArray2D< Type > &  B,
unsigned int  r,
unsigned int  c 
)

Insert array B in array A at the given position.

Parameters
A: Main array.
B: Array to insert.
r: Index of the row where to add the array.
c: Index of the column where to add the array.
Returns
Array with B insert in A.
Warning
Throw exception if the sizes of the arrays do not allow the insertion.

Definition at line 1215 of file vpArray2D.h.

References vpArray2D< Type >::insert().

◆ insert() [2/2]

template<class Type >
void vpArray2D< Type >::insert ( const vpArray2D< Type > &  A,
unsigned int  r,
unsigned int  c 
)
inline

Insert array A at the given position in the current array.

Warning
Throw vpException::dimensionError if the dimensions of the matrices do not allow the operation.
Parameters
A: The array to insert.
r: The index of the row to begin to insert data.
c: The index of the column to begin to insert data.

Definition at line 484 of file vpArray2D.h.

References vpArray2D< Type >::colNum, vpArray2D< Type >::data, vpException::dimensionError, vpArray2D< Type >::getCols(), vpArray2D< Type >::getRows(), vpArray2D< Type >::rowNum, and vpArray2D< Type >::size().

Referenced by vpArray2D< Type >::conv2(), vpMatrix::insert(), vpPioneerPan::set_mMp(), and vpPioneerPan::set_pMe().

◆ load()

template<class Type >
static bool vpArray2D< Type >::load ( const std::string &  filename,
vpArray2D< Type > &  A,
bool  binary = false,
char *  header = nullptr 
)
inlinestatic

Load a matrix from a file.

Parameters
filename: Absolute file name.
A: Array to be loaded
binary: If true the matrix is loaded from a binary file, else from a text file.
header: Header of the file is loaded in this parameter.
Returns
Returns true if success.
See also
save()

Definition at line 653 of file vpArray2D.h.

References vpException::badValue, and vpArray2D< Type >::resize().

Referenced by vpMatrix::loadMatrix().

◆ loadYAML()

template<class Type >
static bool vpArray2D< Type >::loadYAML ( const std::string &  filename,
vpArray2D< Type > &  A,
char *  header = nullptr 
)
inlinestatic

Load an array from a YAML-formatted file.

Parameters
filename: absolute file name.
A: array to be loaded from the file.
header: header of the file is loaded in this parameter.
Returns
Returns true on success.
See also
saveYAML()

Definition at line 767 of file vpArray2D.h.

References vpArray2D< Type >::resize().

Referenced by vpMatrix::loadMatrixYAML().

◆ operator!=()

template<class Type >
bool operator!= ( const vpArray2D< Type > &  A) const

Not equal to comparison operator of a 2D array.

Definition at line 1300 of file vpArray2D.h.

◆ operator=() [1/2]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( const vpArray2D< Type > &  A)
inline

Copy operator of a 2D array.

Definition at line 521 of file vpArray2D.h.

References vpArray2D< Type >::colNum, vpArray2D< Type >::data, vpArray2D< Type >::resize(), and vpArray2D< Type >::rowNum.

◆ operator=() [2/2]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( Type  x)
inline

Set all the elements of the array to x.

Definition at line 512 of file vpArray2D.h.

References vpArray2D< Type >::data, and vpArray2D< Type >::dsize.

◆ operator==()

template<class Type >
bool vpArray2D< Type >::operator== ( const vpArray2D< Type > &  A) const

Equal to comparison operator of a 2D array.

Definition at line 1246 of file vpArray2D.h.

References vpArray2D< Type >::colNum, vpArray2D< Type >::data, vpArray2D< Type >::rowNum, and vpArray2D< Type >::size().

◆ operator[]() [1/2]

template<class Type >
Type* vpArray2D< Type >::operator[] ( unsigned int  i)
inline

Set element $A_{ij} = x$ using A[i][j] = x.

Definition at line 591 of file vpArray2D.h.

References vpArray2D< Type >::rowPtrs.

◆ operator[]() [2/2]

template<class Type >
Type* vpArray2D< Type >::operator[] ( unsigned int  i) const
inline

Get element $x = A_{ij}$ using x = A[i][j].

Definition at line 593 of file vpArray2D.h.

References vpArray2D< Type >::rowPtrs.

◆ reshape()

template<class Type >
void vpArray2D< Type >::reshape ( unsigned int  nrows,
unsigned int  ncols 
)
inline

◆ resize()

template<class Type >
void vpArray2D< Type >::resize ( unsigned int  nrows,
unsigned int  ncols,
bool  flagNullify = true,
bool  recopy_ = true 
)
inline

Set the size of the array and initialize all the values to zero.

Parameters
nrows: number of rows.
ncols: number of column.
flagNullify: if true, then the array is re-initialized to 0 after resize. If false, the initial values from the common part of the array (common part between old and new version of the array) are kept. Default value is true.
recopy_: if true, will perform an explicit recopy of the old data.

Definition at line 352 of file vpArray2D.h.

References vpArray2D< Type >::colNum, vpArray2D< Type >::dsize, vpException::memoryAllocationError, vpArray2D< Type >::rowNum, and vpArray2D< Type >::rowPtrs.

Referenced by vpMatrix::AAt(), vpMatrix::add2Matrices(), vpMatrix::add2WeightedMatrices(), vpMatrix::AtA(), vpLinProg::colReduction(), vpServo::computeProjectionOperators(), vpMbEdgeKltTracker::computeVVS(), vpMbDepthDenseTracker::computeVVSInit(), vpMbDepthNormalTracker::computeVVSInit(), vpMbEdgeTracker::computeVVSInit(), vpMbKltTracker::computeVVSInit(), vpMbGenericTracker::computeVVSInit(), vpMatrix::cond(), vpArray2D< Type >::conv2(), vpMatrix::createDiagonalMatrix(), vpProjectionDisplay::display(), vpHomography::DLT(), vp::eigen2visp(), vpMatrix::eigenValues(), vpMatrix::expm(), vpMatrix::extract(), vpRobotFlirPtu::get_eJe(), vpAfma4::get_eJe(), vpAfma6::get_eJe(), vpBiclops::get_eJe(), vpPtu46::get_eJe(), vpRobotPololuPtu::get_eJe(), vpRobotFranka::get_eJe(), vpRobotFlirPtu::get_fJe(), vpAfma4::get_fJe(), vpAfma6::get_fJe(), vpBiclops::get_fJe(), vpPtu46::get_fJe(), vpRobotPololuPtu::get_fJe(), vpRobotFranka::get_fJe(), vpAfma4::get_fJe_inverse(), vpViper::get_fJw(), vpRobotFranka::getMass(), vpArray2D< Type >::hadamard(), vpMatrix::hadamard(), vpProjectionDisplay::init(), vpKalmanFilter::init(), vpTemplateTrackerMIESM::initCompInverse(), vpCircleHoughTransform::initGaussianFilters(), vpCircleHoughTransform::initGradientFilters(), vpMbtDistanceCircle::initInteractionMatrixError(), vpMbtDistanceCylinder::initInteractionMatrixError(), vpMbtDistanceLine::initInteractionMatrixError(), vpTemplateTracker::initTracking(), vpImageTools::initUndistortMap(), vpArray2D< Type >::insert(), vpGenericFeature::interaction(), vpMatrix::inverseByLU(), vpMatrix::inverseByQRLapack(), vpMatrix::inverseTriangular(), vpMatrix::juxtaposeMatrices(), vpMatrix::kernel(), vpMatrix::kron(), vpArray2D< Type >::load(), vpArray2D< Type >::loadYAML(), vpMatrix::mult2Matrices(), vpMatrix::negateMatrix(), vpMatrix::nullSpace(), vpMatrix::operator*(), vpMatrix::operator/(), vpArray2D< Type >::operator=(), vpRotationVector::operator=(), vpPose::poseVirtualVSrobust(), vpMatrix::qr(), vpMatrix::qrPivot(), vpIoTools::readConfigVar(), vpArray2D< Type >::reshape(), vpColVector::reshape(), vpRowVector::reshape(), vpColVector::resize(), vpRowVector::resize(), vpLinProg::rowReduction(), vpServo::secondaryTask(), vpMbTracker::setProjectionErrorKernelSize(), vpColVector::skew(), vpTranslationVector::skew(), vpLinProg::solveLP(), vpQuadProg::solveQPi(), vpMatrix::stack(), vpMatrix::sub2Matrices(), vpMatrix::svdEigen3(), vpMatrix::svdLapack(), vpMatrix::svdOpenCV(), vpMatrix::transpose(), vpTemplateTrackerMI::vpTemplateTrackerMI(), vpTemplateTrackerSSD::vpTemplateTrackerSSD(), vpTemplateTrackerSSDESM::vpTemplateTrackerSSDESM(), vpTemplateTrackerSSDInverseCompositional::vpTemplateTrackerSSDInverseCompositional(), vpTemplateTrackerWarpHomographySL3::vpTemplateTrackerWarpHomographySL3(), and vpTemplateTrackerZNCC::vpTemplateTrackerZNCC().

◆ save()

template<class Type >
static bool vpArray2D< Type >::save ( const std::string &  filename,
const vpArray2D< Type > &  A,
bool  binary = false,
const char *  header = "" 
)
inlinestatic

Save a matrix to a file.

Parameters
filename: Absolute file name.
A: Array to be saved.
binary: If true the matrix is saved in a binary file, else a text file.
header: Optional line that will be saved at the beginning of the file.
Returns
Returns true if success.

Warning : If you save the matrix as in a text file the precision is less than if you save it in a binary file.

See also
load()

Definition at line 855 of file vpArray2D.h.

References vpArray2D< Type >::getCols(), and vpArray2D< Type >::getRows().

Referenced by vpMatrix::saveMatrix().

◆ saveYAML()

template<class Type >
static bool vpArray2D< Type >::saveYAML ( const std::string &  filename,
const vpArray2D< Type > &  A,
const char *  header = "" 
)
inlinestatic

Save an array in a YAML-formatted file.

Parameters
filename: absolute file name.
A: array to be saved in the file.
header: optional lines that will be saved at the beginning of the file. Should be YAML-formatted and will adapt to the indentation if any.
Returns
Returns true if success.

Here is an example of outputs.

vpArray2D::saveYAML("matrix.yml", M, "example: a YAML-formatted header");
vpArray2D::saveYAML("matrixIndent.yml", M, "example:\n - a YAML-formatted \
header\n - with inner indentation");
static bool saveYAML(const std::string &filename, const vpArray2D< Type > &A, const char *header="")
Definition: vpArray2D.h:950

Content of matrix.yml:

example: a YAML-formatted header
rows: 3
cols: 4
- [0, 0, 0, 0]
- [0, 0, 0, 0]
- [0, 0, 0, 0]
Type * data
Address of the first element of the data array.
Definition: vpArray2D.h:139

Content of matrixIndent.yml:

example:
- a YAML-formatted header
- with inner indentation
rows: 3
cols: 4
- [0, 0, 0, 0]
- [0, 0, 0, 0]
- [0, 0, 0, 0]
See also
loadYAML()
Examples
tutorial-hsv-range-tuner.cpp.

Definition at line 950 of file vpArray2D.h.

References vpArray2D< Type >::getCols(), and vpArray2D< Type >::getRows().

Referenced by vpMatrix::saveMatrixYAML().

◆ size()

template<class Type >
unsigned int vpArray2D< Type >::size ( ) const
inline

Return the number of elements of the 2D array.

Examples
testArray2D.cpp.

Definition at line 339 of file vpArray2D.h.

References vpArray2D< Type >::colNum, and vpArray2D< Type >::rowNum.

Referenced by vpVirtuose::addForce(), vpForceTorqueAtiSensor::bias(), vpQuaternionVector::buildFrom(), vpRxyzVector::buildFrom(), vpRzyxVector::buildFrom(), vpRzyzVector::buildFrom(), vpThetaUVector::buildFrom(), vpTranslationVector::buildFrom(), vpMbtFaceDepthNormal::computeNormalVisibility(), vpMath::deg(), vpExponentialMap::direct(), vpColVector::dotProd(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), vpRobotPololuPtu::get_eJe(), vpRobotFranka::get_fJe(), vpRobotPololuPtu::get_fJe(), vpRobotFranka::get_fMe(), vpRobotUniversalRobots::get_fMe(), vpForceTorqueAtiSensor::getForceTorque(), vpMeEllipse::getParameters(), vpPoint::getWorldCoordinates(), vpMatrix::inducedL2Norm(), vpImageTools::inRange(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpColVector::insert(), vpRowVector::insert(), vpMath::lineFitting(), vpMath::lookAt(), vpHomogeneousMatrix::mean(), vpRotationMatrix::mean(), vpColVector::mean(), vpRowVector::mean(), vpColVector::median(), vpRowVector::median(), vpHomography::operator*(), vpColVector::operator*(), vpTranslationVector::operator+(), vpColVector::operator=(), vpRowVector::operator=(), vpQuaternionVector::operator=(), vpRxyzVector::operator=(), vpRzyxVector::operator=(), vpRzyzVector::operator=(), vpThetaUVector::operator=(), vpTranslationVector::operator=(), vpRotationVector::operator=(), vpArray2D< Type >::operator==(), vpPlot::plot(), vpMath::rad(), vpRobot::saturateVelocities(), vpServo::secondaryTaskJointLimitAvoidance(), vpImageFilter::sepFilter(), vpVirtuose::setArticularForce(), vpVirtuose::setArticularPosition(), vpVirtuose::setArticularVelocity(), vpServo::setCameraDoF(), vpRobotFlirPtu::setCartVelocity(), vpRobotKinova::setCartVelocity(), vpRobotTemplate::setCartVelocity(), vpVirtuose::setForce(), vpRobotFranka::setForceTorque(), vpRobotKinova::setJointVelocity(), vpRobotFlirPtu::setPanPosLimits(), vpQbSoftHand::setPosition(), vpReflexTakktile2::setPosition(), vpRobotUniversalRobots::setPosition(), vpRobotFlirPtu::setPosition(), vpRobotKinova::setPosition(), vpRobotPololuPtu::setPosition(), vpReflexTakktile2::setPositioningVelocity(), vpRobotFlirPtu::setTiltPosLimits(), vpRobotBebop2::setVelocity(), vpRobotPololuPtu::setVelocity(), vpRobotFlirPtu::setVelocity(), vpRobotFranka::setVelocity(), vpRobotKinova::setVelocity(), vpRobotPioneer::setVelocity(), vpRobotTemplate::setVelocity(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpVirtuose::setVelocity(), vpReflexTakktile2::setVelocityUntilAnyContact(), vpReflexTakktile2::setVelocityUntilEachContact(), vpPoint::setWorldCoordinates(), vpMatrix::stack(), vpColVector::stdev(), vpRowVector::stdev(), vpMatrix::svdEigen3(), vpForceTorqueAtiSensor::unbias(), vp::visp2eigen(), vpColVector::vpColVector(), vpRowVector::vpRowVector(), vpTranslationVector::vpTranslationVector(), and vpTemplateTrackerWarp::warpTriangle().

◆ t()

template<class Type >
vpArray2D< Type > vpArray2D< Type >::t

Compute the transpose of the array.

Returns
vpArray2D<Type> C = A^T
Examples
tutorial-hsv-range-tuner.cpp.

Definition at line 1132 of file vpArray2D.h.

Referenced by vpImageFilter::getScharrKernelX(), and vpImageFilter::getSobelKernelX().

Friends And Related Function Documentation

◆ from_json

template<class Type >
template<class T >
void from_json ( const nlohmann::json &  j,
vpArray2D< T > &  array 
)
friend

◆ insert()

template<class Type >
void vpArray2D< Type >::insert ( const vpArray2D< Type > &  A,
const vpArray2D< Type > &  B,
vpArray2D< Type > &  C,
unsigned int  r,
unsigned int  c 
)
related

Insert array B in array A at the given position.

Parameters
A: Main array.
B: Array to insert.
C: Result array.
r: Index of the row where to insert array B.
c: Index of the column where to insert array B.
Warning
Throw exception if the sizes of the arrays do not allow the insertion.

Definition at line 1224 of file vpArray2D.h.

References vpException::dimensionError, vpArray2D< Type >::getCols(), vpArray2D< Type >::getRows(), and vpArray2D< Type >::resize().

Referenced by vpArray2D< Type >::insert().

◆ operator!=()

template<class Type >
bool operator!= ( const vpArray2D< Type > &  A) const
related

Definition at line 1300 of file vpArray2D.h.

◆ operator<<

template<class Type >
std::ostream& operator<< ( std::ostream &  s,
const vpArray2D< Type > &  A 
)
friend

Writes the given array to the output stream and returns a reference to the output stream.

Examples
testAprilTag.cpp, testEigenConversion.cpp, and tutorial-pose-from-planar-object.cpp.

Definition at line 600 of file vpArray2D.h.

◆ operator==() [1/2]

bool operator== ( const vpArray2D< double > &  A) const
related

◆ operator==() [2/2]

bool operator== ( const vpArray2D< float > &  A) const
related

◆ to_json

template<class Type >
template<class T >
void to_json ( nlohmann::json &  j,
const vpArray2D< T > &  array 
)
friend

◆ vpGEMM()

template<class Type >
void vpGEMM ( const vpArray2D< double > &  A,
const vpArray2D< double > &  B,
const double &  alpha,
const vpArray2D< double > &  C,
const double &  beta,
vpArray2D< double > &  D,
const unsigned int &  ops = 0 
)
related

This function performs generalized matrix multiplication: D = alpha*op(A)*op(B) + beta*op(C), where op(X) is X or X^T. Operation on A, B and C matrices is described by enumeration vpGEMMmethod().

For example, to compute D = alpha*A^T*B^T+beta*C we need to call :

vpGEMM(A, B, alpha, C, beta, D, VP_GEMM_A_T + VP_GEMM_B_T);
void vpGEMM(const vpArray2D< double > &A, const vpArray2D< double > &B, const double &alpha, const vpArray2D< double > &C, const double &beta, vpArray2D< double > &D, const unsigned int &ops=0)
Definition: vpGEMM.h:388

If C is not used, vpGEMM must be called using an empty array null. Thus to compute D = alpha*A^T*B, we have to call:

vpGEMM(A, B, alpha, null, 0, D, VP_GEMM_B_T);
Exceptions
vpException::incorrectMatrixSizeErrorif the sizes of the matrices do not allow the operations.
Parameters
A: An array that could be a vpMatrix.
B: An array that could be a vpMatrix.
alpha: A scalar.
C: An array that could be a vpMatrix.
beta: A scalar.
D: The resulting array that could be a vpMatrix.
ops: A scalar describing operation applied on the matrices. Possible values are the one defined in vpGEMMmethod(): VP_GEMM_A_T, VP_GEMM_B_T, VP_GEMM_C_T.
Examples
testMatrix.cpp.

Definition at line 388 of file vpGEMM.h.

References vpException::functionNotImplementedError.

◆ vpGEMMmethod

template<class Type >
enum vpGEMMmethod
related

Enumeration of the operations applied on matrices in vpGEMM() function.

Operations are :

  • VP_GEMM_A_T to use the transpose matrix of A instead of the matrix A
  • VP_GEMM_B_T to use the transpose matrix of B instead of the matrix B
  • VP_GEMM_C_T to use the transpose matrix of C instead of the matrix C

Definition at line 52 of file vpGEMM.h.

Member Data Documentation

◆ colNum

◆ data

template<class Type >
Type* vpArray2D< Type >::data

Address of the first element of the data array.

Examples
testArray2D.cpp.

Definition at line 139 of file vpArray2D.h.

Referenced by vpMatrix::AAt(), vpMatrix::AtA(), vpCircleHoughTransform::computeGradients(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), vpMbTracker::computeJTR(), vpImageFilter::computePartialDerivatives(), vpArray2D< Type >::conv2(), vpMatrix::detByLULapack(), vpColVector::dotProd(), vp::eigen2visp(), vpMatrix::eigenValues(), vpMatrix::expm(), vpRobotViper650::getForceTorque(), vpRobotViper850::getForceTorque(), vpRobotViper650::getPosition(), vpRobotViper850::getPosition(), vpMatrix::getRow(), vpImageFilter::getScharrKernelX(), vpImageFilter::getSobelKernelX(), vpImageFilter::getSobelKernelY(), vpRobotViper650::getVelocity(), vpRobotViper850::getVelocity(), vpArray2D< Type >::hadamard(), vpColVector::hadamard(), vpMatrix::hadamard(), vpRobotViper650::init(), vpRobotViper850::init(), vpSubColVector::init(), vpSubMatrix::init(), vpSubRowVector::init(), vpCircleHoughTransform::initGaussianFilters(), vpCircleHoughTransform::initGradientFilters(), vpTemplateTrackerMIESM::initHessienDesired(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpColVector::insert(), vpMatrix::inverseByCholeskyLapack(), vpMatrix::inverseByCholeskyOpenCV(), vpMatrix::inverseByLUEigen3(), vpMatrix::inverseByLULapack(), vpMatrix::inverseByLUOpenCV(), vpMatrix::inverseByQRLapack(), vpMatrix::inverseTriangular(), vpColVector::invSort(), vpColVector::mean(), vpRowVector::mean(), vpColVector::median(), vpRowVector::median(), vpMatrix::mult2Matrices(), vpMatrix::multMatrixVector(), vpHomography::operator*(), vpMatrix::operator*(), vpColVector::operator*(), vpRowVector::operator*(), vpTranslationVector::operator*(), vpColVector::operator-(), vpRowVector::operator-(), vpTranslationVector::operator-(), vpHomography::operator/(), vpColVector::operator/(), vpRowVector::operator/(), vpTranslationVector::operator/(), vpMatrix::operator=(), vpTranslationVector::operator=(), vpColVector::operator=(), vpRotationVector::operator=(), vpRowVector::operator=(), vpSubColVector::operator=(), vpArray2D< Type >::operator=(), vpArray2D< Type >::operator==(), vpColVector::operator==(), vpRowVector::operator==(), vpMatrix::qr(), vpMatrix::qrPivot(), vpImageTools::remap(), vpArray2D< Type >::reshape(), vpHomography::robust(), vpRobotAfma4::setPosition(), vpRobotViper650::setPosition(), vpRobotViper850::setPosition(), vpMbTracker::setProjectionErrorKernelSize(), vpRobotAfma4::setVelocity(), vpRobotAfma6::setVelocity(), vpRobotViper650::setVelocity(), vpRobotViper850::setVelocity(), vpColVector::sort(), vpMatrix::stack(), vpMatrix::stackColumns(), vpMatrix::stackRows(), vpColVector::stdev(), vpRowVector::stdev(), vpMatrix::svdEigen3(), vpMatrix::svdLapack(), vpMatrix::svdOpenCV(), vpColVector::t(), vpPoseVector::t(), vpRowVector::t(), vpTranslationVector::t(), vpTemplateTrackerMIESM::trackNoPyr(), vpMatrix::transpose(), vp::visp2eigen(), and vpMbTracker::vpMbTracker().

◆ dsize

template<class Type >
unsigned int vpArray2D< Type >::dsize
protected

Current array size (rowNum * colNum)

Definition at line 135 of file vpArray2D.h.

Referenced by vpArray2D< Type >::operator=(), vpArray2D< Type >::reshape(), and vpArray2D< Type >::resize().

◆ rowNum

◆ rowPtrs