Visual Servoing Platform  version 3.6.1 under development (2023-12-01)
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 (vpArray2D< Type > &&A) noexcept
 
 vpArray2D (const std::initializer_list< Type > &list)
 
 vpArray2D (unsigned int nrows, unsigned int ncols, const std::initializer_list< Type > &list)
 
 vpArray2D (const std::initializer_list< std::initializer_list< Type > > &lists)
 
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)
 
vpArray2D< Type > & operator= (vpArray2D< Type > &&other) noexcept
 
vpArray2D< Type > & operator= (const std::initializer_list< Type > &list)
 
vpArray2D< Type > & operator= (const std::initializer_list< std::initializer_list< Type > > &lists)
 
vpArray2D< Type > & operator= (const nlohmann::json &j)=delete
 
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, and tutorial-apriltag-detector-live-T265-realsense.cpp.

Definition at line 124 of file vpArray2D.h.

Constructor & Destructor Documentation

◆ vpArray2D() [1/8]

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 138 of file vpArray2D.h.

◆ vpArray2D() [2/8]

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

Copy constructor of a 2D array.

Definition at line 138 of file vpArray2D.h.

◆ vpArray2D() [3/8]

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 138 of file vpArray2D.h.

◆ vpArray2D() [4/8]

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 138 of file vpArray2D.h.

◆ vpArray2D() [5/8]

template<class Type >
vpArray2D< Type >::vpArray2D ( vpArray2D< Type > &&  A)
inlinenoexcept

Definition at line 138 of file vpArray2D.h.

◆ vpArray2D() [6/8]

template<class Type >
vpArray2D< Type >::vpArray2D ( const std::initializer_list< Type > &  list)
inlineexplicit

Definition at line 138 of file vpArray2D.h.

◆ vpArray2D() [7/8]

template<class Type >
vpArray2D< Type >::vpArray2D ( unsigned int  nrows,
unsigned int  ncols,
const std::initializer_list< Type > &  list 
)
inlineexplicit

Definition at line 138 of file vpArray2D.h.

◆ vpArray2D() [8/8]

template<class Type >
vpArray2D< Type >::vpArray2D ( const std::initializer_list< std::initializer_list< Type > > &  lists)
inlineexplicit

Definition at line 138 of file vpArray2D.h.

◆ ~vpArray2D()

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

Destructor that deallocate memory.

Definition at line 138 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 1045 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 1052 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 257 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(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpRowVector::insert(), vpMatrix::inverseByCholeskyLapack(), vpMatrix::juxtaposeMatrices(), vpMatrix::kron(), 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 998 of file vpArray2D.h.

◆ getMinValue()

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

Return the array min value.

Definition at line 981 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 267 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(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpGenericFeature::interaction(), vpMatrix::inverseByCholeskyLapack(), vpMatrix::inverseByQRLapack(), vpColVector::invSort(), vpMatrix::juxtaposeMatrices(), vpMatrix::kernel(), vpScale::KernelDensity(), vpScale::KernelDensityGradient(), vpMatrix::kron(), 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} $

Definition at line 1018 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 1117 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 394 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 557 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 671 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 1202 of file vpArray2D.h.

◆ operator=() [1/6]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( const nlohmann::json &  j)
delete

◆ operator=() [2/6]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( const std::initializer_list< std::initializer_list< Type > > &  lists)
inline

◆ operator=() [3/6]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( const std::initializer_list< Type > &  list)
inline

◆ operator=() [4/6]

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

Copy operator of a 2D array.

Definition at line 431 of file vpArray2D.h.

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

◆ operator=() [5/6]

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

Set all the elements of the array to x.

Definition at line 422 of file vpArray2D.h.

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

◆ operator=() [6/6]

template<class Type >
vpArray2D<Type>& vpArray2D< Type >::operator= ( vpArray2D< Type > &&  other)
inlinenoexcept

◆ operator==()

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

Equal to comparison operator of a 2D array.

Definition at line 1148 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 495 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 497 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 282 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(), 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 759 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:852

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:138

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()

Definition at line 852 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 269 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(), vpPoint::getWorldCoordinates(), vpMatrix::inducedL2Norm(), vpArray2D< Type >::insert(), vpMatrix::insert(), vpColVector::insert(), vpRowVector::insert(), vpMath::lookAt(), vpColVector::mean(), vpRowVector::mean(), vpColVector::median(), vpRowVector::median(), vpHomography::operator*(), vpColVector::operator*(), vpTranslationVector::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(), 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

Definition at line 1034 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.
Examples
testThread2.cpp.

Definition at line 1126 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 1202 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 504 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 138 of file vpArray2D.h.

Referenced by vpMatrix::AAt(), vpMatrix::AtA(), 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(), 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 134 of file vpArray2D.h.

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

◆ rowNum

◆ rowPtrs