base/Matrix.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
23 // \callgraph
24 
25 #pragma once
26 
28 #include <gtsam/base/Vector.h>
29 
30 #include <vector>
31 
37 namespace gtsam {
38 
39 typedef Eigen::MatrixXd Matrix;
41 
42 // Create handy typedefs and constants for square-size matrices
43 // MatrixMN, MatrixN = MatrixNN, I_NxN, and Z_NxN, for M,N=1..9
44 #define GTSAM_MAKE_MATRIX_DEFS(N) \
45 using Matrix##N = Eigen::Matrix<double, N, N>; \
46 using Matrix1##N = Eigen::Matrix<double, 1, N>; \
47 using Matrix2##N = Eigen::Matrix<double, 2, N>; \
48 using Matrix3##N = Eigen::Matrix<double, 3, N>; \
49 using Matrix4##N = Eigen::Matrix<double, 4, N>; \
50 using Matrix5##N = Eigen::Matrix<double, 5, N>; \
51 using Matrix6##N = Eigen::Matrix<double, 6, N>; \
52 using Matrix7##N = Eigen::Matrix<double, 7, N>; \
53 using Matrix8##N = Eigen::Matrix<double, 8, N>; \
54 using Matrix9##N = Eigen::Matrix<double, 9, N>; \
55 static const Eigen::MatrixBase<Matrix##N>::IdentityReturnType I_##N##x##N = Matrix##N::Identity(); \
56 static const Eigen::MatrixBase<Matrix##N>::ConstantReturnType Z_##N##x##N = Matrix##N::Zero();
57 
67 
68 // Matrix expressions for accessing parts of matrices
69 typedef Eigen::Block<Matrix> SubMatrix;
70 typedef Eigen::Block<const Matrix> ConstSubMatrix;
71 
72 // Matrix formatting arguments when printing.
73 // Akin to Matlab style.
74 const Eigen::IOFormat& matlabFormat();
75 
79 template <class MATRIX>
80 bool equal_with_abs_tol(const Eigen::DenseBase<MATRIX>& A, const Eigen::DenseBase<MATRIX>& B, double tol = 1e-9) {
81 
82  const size_t n1 = A.cols(), m1 = A.rows();
83  const size_t n2 = B.cols(), m2 = B.rows();
84 
85  if(m1!=m2 || n1!=n2) return false;
86 
87  for(size_t i=0; i<m1; i++)
88  for(size_t j=0; j<n1; j++) {
89  if(!fpEqual(A(i,j), B(i,j), tol, false)) {
90  return false;
91  }
92  }
93  return true;
94 }
95 
99 inline bool operator==(const Matrix& A, const Matrix& B) {
100  return equal_with_abs_tol(A,B,1e-9);
101 }
102 
106 inline bool operator!=(const Matrix& A, const Matrix& B) {
107  return !(A==B);
108  }
109 
113 GTSAM_EXPORT bool assert_equal(const Matrix& A, const Matrix& B, double tol = 1e-9);
114 
118 GTSAM_EXPORT bool assert_inequal(const Matrix& A, const Matrix& B, double tol = 1e-9);
119 
123 GTSAM_EXPORT bool assert_equal(const std::list<Matrix>& As, const std::list<Matrix>& Bs, double tol = 1e-9);
124 
128 GTSAM_EXPORT bool linear_independent(const Matrix& A, const Matrix& B, double tol = 1e-9);
129 
133 GTSAM_EXPORT bool linear_dependent(const Matrix& A, const Matrix& B, double tol = 1e-9);
134 
139 GTSAM_EXPORT Vector operator^(const Matrix& A, const Vector & v);
140 
142 template<class MATRIX>
143 inline MATRIX prod(const MATRIX& A, const MATRIX&B) {
144  MATRIX result = A * B;
145  return result;
146 }
147 
151 GTSAM_EXPORT void print(const Matrix& A, const std::string& s, std::ostream& stream);
152 
156 GTSAM_EXPORT void print(const Matrix& A, const std::string& s = "");
157 
161 GTSAM_EXPORT void save(const Matrix& A, const std::string &s, const std::string& filename);
162 
168 GTSAM_EXPORT std::istream& operator>>(std::istream& inputStream, Matrix& destinationMatrix);
169 
179 template<class MATRIX>
180 Eigen::Block<const MATRIX> sub(const MATRIX& A, size_t i1, size_t i2, size_t j1, size_t j2) {
181  size_t m=i2-i1, n=j2-j1;
182  return A.block(i1,j1,m,n);
183 }
184 
193 template <typename Derived1, typename Derived2>
194 void insertSub(Eigen::MatrixBase<Derived1>& fullMatrix, const Eigen::MatrixBase<Derived2>& subMatrix, size_t i, size_t j) {
195  fullMatrix.block(i, j, subMatrix.rows(), subMatrix.cols()) = subMatrix;
196 }
197 
201 GTSAM_EXPORT Matrix diag(const std::vector<Matrix>& Hs);
202 
209 template<class MATRIX>
210 const typename MATRIX::ConstColXpr column(const MATRIX& A, size_t j) {
211  return A.col(j);
212 }
213 
220 template<class MATRIX>
221 const typename MATRIX::ConstRowXpr row(const MATRIX& A, size_t j) {
222  return A.row(j);
223 }
224 
230 template<class MATRIX>
231 void zeroBelowDiagonal(MATRIX& A, size_t cols=0) {
232  const size_t m = A.rows(), n = A.cols();
233  const size_t k = (cols) ? std::min(cols, std::min(m,n)) : std::min(m,n);
234  for (size_t j=0; j<k; ++j)
235  A.col(j).segment(j+1, m-(j+1)).setZero();
236 }
237 
241 inline Matrix trans(const Matrix& A) { return A.transpose(); }
242 
244 template <int OutM, int OutN, int OutOptions, int InM, int InN, int InOptions>
245 struct Reshape {
246  //TODO replace this with Eigen's reshape function as soon as available. (There is a PR already pending : https://bitbucket.org/eigen/eigen/pull-request/41/reshape/diff)
249  return in.data();
250  }
251 };
252 
254 template <int M, int InOptions>
255 struct Reshape<M, M, InOptions, M, M, InOptions> {
258  return in;
259  }
260 };
261 
263 template <int M, int N, int InOptions>
264 struct Reshape<M, N, InOptions, M, N, InOptions> {
267  return in;
268  }
269 };
270 
272 template <int M, int N, int InOptions>
273 struct Reshape<N, M, InOptions, M, N, InOptions> {
276  return in.transpose();
277  }
278 };
279 
280 template <int OutM, int OutN, int OutOptions, int InM, int InN, int InOptions>
282  static_assert(InM * InN == OutM * OutN);
284 }
285 
292 GTSAM_EXPORT std::pair<Matrix,Matrix> qr(const Matrix& A);
293 
299 GTSAM_EXPORT void inplace_QR(Matrix& A);
300 
309 GTSAM_EXPORT std::list<std::tuple<Vector, double, double> >
311 
319 GTSAM_EXPORT void householder_(Matrix& A, size_t k, bool copy_vectors=true);
320 
327 GTSAM_EXPORT void householder(Matrix& A, size_t k);
328 
336 GTSAM_EXPORT Vector backSubstituteUpper(const Matrix& U, const Vector& b, bool unit=false);
337 
345 //TODO: is this function necessary? it isn't used
346 GTSAM_EXPORT Vector backSubstituteUpper(const Vector& b, const Matrix& U, bool unit=false);
347 
355 GTSAM_EXPORT Vector backSubstituteLower(const Matrix& L, const Vector& b, bool unit=false);
356 
363 GTSAM_EXPORT Matrix stack(size_t nrMatrices, ...);
364 GTSAM_EXPORT Matrix stack(const std::vector<Matrix>& blocks);
365 
376 GTSAM_EXPORT Matrix collect(const std::vector<const Matrix *>& matrices, size_t m = 0, size_t n = 0);
377 GTSAM_EXPORT Matrix collect(size_t nrMatrices, ...);
378 
385 GTSAM_EXPORT void vector_scale_inplace(const Vector& v, Matrix& A, bool inf_mask = false); // row
386 GTSAM_EXPORT Matrix vector_scale(const Vector& v, const Matrix& A, bool inf_mask = false); // row
387 GTSAM_EXPORT Matrix vector_scale(const Matrix& A, const Vector& v, bool inf_mask = false); // column
388 
400 inline Matrix3 skewSymmetric(double wx, double wy, double wz) {
401  return (Matrix3() << 0.0, -wz, +wy, +wz, 0.0, -wx, -wy, +wx, 0.0).finished();
402 }
403 
404 template <class Derived>
406  return skewSymmetric(w(0), w(1), w(2));
407 }
408 
410 GTSAM_EXPORT Matrix inverse_square_root(const Matrix& A);
411 
413 GTSAM_EXPORT Matrix cholesky_inverse(const Matrix &A);
414 
427 GTSAM_EXPORT void svd(const Matrix& A, Matrix& U, Vector& S, Matrix& V);
428 
436 GTSAM_EXPORT std::tuple<int, double, Vector>
437 DLT(const Matrix& A, double rank_tol = 1e-9);
438 
444 GTSAM_EXPORT Matrix expm(const Matrix& A, size_t K=7);
445 
446 std::string formatMatrixIndented(const std::string& label, const Matrix& matrix, bool makeVectorHorizontal = false);
447 
454 template <int N>
458 
462  OptionalJacobian<N, N> H2 = {}) const {
463  const MatrixN invA = A.inverse();
464  const VectorN c = invA * b;
465  // The derivative in A is just -[c[0]*invA c[1]*invA ... c[N-1]*invA]
466  if (H1)
467  for (size_t j = 0; j < N; j++)
468  H1->template middleCols<N>(N * j) = -c[j] * invA;
469  // The derivative in b is easy, as invA*b is just a linear map:
470  if (H2) *H2 = invA;
471  return c;
472  }
473 };
474 
480 template <typename T, int N>
485 
486  // The function phi should calculate f(a)*b, with derivatives in a and b.
487  // Naturally, the derivative in b is f(a).
488  typedef std::function<VectorN(
491 
494 
496  VectorN operator()(const T& a, const VectorN& b,
497  OptionalJacobian<N, M> H1 = {},
498  OptionalJacobian<N, N> H2 = {}) const {
499  MatrixN A;
500  phi_(a, b, {}, A); // get A = f(a) by calling f once
501  const MatrixN invA = A.inverse();
502  const VectorN c = invA * b;
503 
504  if (H1) {
506  phi_(a, c, H, {}); // get derivative H of forward mapping
507  *H1 = -invA* H;
508  }
509  if (H2) *H2 = invA;
510  return c;
511  }
512 
513  private:
514  const Operator phi_;
515 };
516 
517 GTSAM_EXPORT Matrix LLt(const Matrix& A);
518 
519 GTSAM_EXPORT Matrix RtR(const Matrix& A);
520 
521 GTSAM_EXPORT Vector columnNormSquare(const Matrix &A);
522 } // namespace gtsam
w
RowVector3d w
Definition: Matrix_resize_int.cpp:3
gtsam::weighted_eliminate
list< std::tuple< Vector, double, double > > weighted_eliminate(Matrix &A, Vector &b, const Vector &sigmas)
Definition: Matrix.cpp:271
H
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate set rrange[*:*] noreverse nowriteback set trange[*:*] noreverse nowriteback set urange[*:*] noreverse nowriteback set vrange[*:*] noreverse nowriteback set xlabel matrix size set x2label set timefmt d m y n H
Definition: gnuplot_common_settings.hh:74
gtsam::operator^
Vector operator^(const Matrix &A, const Vector &v)
Definition: Matrix.cpp:128
gtsam::MatrixRowMajor
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > MatrixRowMajor
Definition: base/Matrix.h:40
gtsam::DLT
std::tuple< int, double, Vector > DLT(const Matrix &A, double rank_tol)
Definition: Matrix.cpp:566
Eigen
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
gtsam::operator>>
istream & operator>>(istream &inputStream, Matrix &destinationMatrix)
Definition: Matrix.cpp:173
gtsam::column
const MATRIX::ConstColXpr column(const MATRIX &A, size_t j)
Definition: base/Matrix.h:210
gtsam::MultiplyWithInverseFunction::M
@ M
Definition: base/Matrix.h:482
gtsam::MultiplyWithInverseFunction
Definition: base/Matrix.h:481
gtsam::zeroBelowDiagonal
void zeroBelowDiagonal(MATRIX &A, size_t cols=0)
Definition: base/Matrix.h:231
Eigen::Block
Expression of a fixed-size or dynamic-size block.
Definition: Block.h:103
Vector.h
typedef and functions to augment Eigen's VectorXd
benchmark.n1
n1
Definition: benchmark.py:77
gtsam::MultiplyWithInverse::operator()
VectorN operator()(const MatrixN &A, const VectorN &b, OptionalJacobian< N, N *N > H1={}, OptionalJacobian< N, N > H2={}) const
A.inverse() * b, with optional derivatives.
Definition: base/Matrix.h:460
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam.examples.SFMExample_bal.stream
stream
Definition: SFMExample_bal.py:24
gtsam::householder
void householder(Matrix &A, size_t k)
Definition: Matrix.cpp:352
c
Scalar Scalar * c
Definition: benchVecAdd.cpp:17
gtsam::inverse_square_root
Matrix inverse_square_root(const Matrix &A)
Definition: Matrix.cpp:550
gtsam::diag
Matrix diag(const std::vector< Matrix > &Hs)
Definition: Matrix.cpp:206
gtsam::expm
T expm(const Vector &x, int K=7)
Definition: Lie.h:317
gtsam::MultiplyWithInverseFunction::Operator
std::function< VectorN(const T &, const VectorN &, OptionalJacobian< N, M >, OptionalJacobian< N, N >)> Operator
Definition: base/Matrix.h:490
gtsam::Reshape::reshape
static ReshapedType reshape(const Eigen::Matrix< double, InM, InN, InOptions > &in)
Definition: base/Matrix.h:248
B
Definition: test_numpy_dtypes.cpp:299
m1
Matrix3d m1
Definition: IOFormat.cpp:2
gtsam::householder_
void householder_(Matrix &A, size_t k, bool copy_vectors)
Definition: Matrix.cpp:325
gtsam::equal_with_abs_tol
bool equal_with_abs_tol(const Eigen::DenseBase< MATRIX > &A, const Eigen::DenseBase< MATRIX > &B, double tol=1e-9)
Definition: base/Matrix.h:80
gtsam::MultiplyWithInverseFunction::VectorN
Eigen::Matrix< double, N, 1 > VectorN
Definition: base/Matrix.h:483
gtsam::Matrix
Eigen::MatrixXd Matrix
Definition: base/Matrix.h:39
gtsam::matlabFormat
const Eigen::IOFormat & matlabFormat()
Definition: Matrix.cpp:139
gtsam::qr
pair< Matrix, Matrix > qr(const Matrix &A)
Definition: Matrix.cpp:234
gtsam::operator==
bool operator==(const Matrix &A, const Matrix &B)
Definition: base/Matrix.h:99
gtsam::reshape
Reshape< OutM, OutN, OutOptions, InM, InN, InOptions >::ReshapedType reshape(const Eigen::Matrix< double, InM, InN, InOptions > &m)
Definition: base/Matrix.h:281
gtsam::MultiplyWithInverseFunction::operator()
VectorN operator()(const T &a, const VectorN &b, OptionalJacobian< N, M > H1={}, OptionalJacobian< N, N > H2={}) const
f(a).inverse() * b, with optional derivatives
Definition: base/Matrix.h:496
gtsam::Vector
Eigen::VectorXd Vector
Definition: Vector.h:38
gtsam::skewSymmetric
Matrix3 skewSymmetric(double wx, double wy, double wz)
Definition: base/Matrix.h:400
result
Values result
Definition: OdometryOptimize.cpp:8
gtsam::MultiplyWithInverseFunction::phi_
const Operator phi_
Definition: base/Matrix.h:514
n
int n
Definition: BiCGSTAB_simple.cpp:1
m2
MatrixType m2(n_dims)
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
benchmark.n2
n2
Definition: benchmark.py:83
A
Definition: test_numpy_dtypes.cpp:298
gtsam::sub
Eigen::Block< const MATRIX > sub(const MATRIX &A, size_t i1, size_t i2, size_t j1, size_t j2)
Definition: base/Matrix.h:180
j
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
gtsam::vector_scale_inplace
void vector_scale_inplace(const Vector &v, Matrix &A, bool inf_mask)
Definition: Matrix.cpp:480
gtsam::row
const MATRIX::ConstRowXpr row(const MATRIX &A, size_t j)
Definition: base/Matrix.h:221
relicense.filename
filename
Definition: relicense.py:57
GTSAM_MAKE_MATRIX_DEFS
#define GTSAM_MAKE_MATRIX_DEFS(N)
Definition: base/Matrix.h:44
gtsam::stack
Matrix stack(size_t nrMatrices,...)
Definition: Matrix.cpp:395
gtsam::MultiplyWithInverseFunction::MatrixN
Eigen::Matrix< double, N, N > MatrixN
Definition: base/Matrix.h:484
gtsam::RtR
Matrix RtR(const Matrix &A)
Definition: Matrix.cpp:528
exampleQR::sigmas
Vector sigmas
Definition: testNoiseModel.cpp:212
gtsam::cholesky_inverse
Matrix cholesky_inverse(const Matrix &A)
Definition: Matrix.cpp:537
gtsam::Reshape
Reshape functor.
Definition: base/Matrix.h:245
gtsam::fpEqual
bool fpEqual(double a, double b, double tol, bool check_relative_also)
Definition: Vector.cpp:41
L
MatrixXd L
Definition: LLT_example.cpp:6
OptionalJacobian.h
Special class for optional Jacobian arguments.
m
Matrix3f m
Definition: AngleAxis_mimic_euler.cpp:1
gtsam::columnNormSquare
Vector columnNormSquare(const Matrix &A)
Definition: Matrix.cpp:223
Eigen::Triplet< double >
gtsam::Reshape< M, M, InOptions, M, M, InOptions >::ReshapedType
const typedef Eigen::Matrix< double, M, M, InOptions > & ReshapedType
Definition: base/Matrix.h:256
Eigen::Map
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:94
gtsam::Reshape::ReshapedType
Eigen::Map< const Eigen::Matrix< double, OutM, OutN, OutOptions > > ReshapedType
Definition: base/Matrix.h:247
matrix
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: gtsam/3rdparty/Eigen/blas/common.h:110
gtsam::svd
void svd(const Matrix &A, Matrix &U, Vector &S, Matrix &V)
Definition: Matrix.cpp:558
ConstColXpr
const typedef Block< const Derived, internal::traits< Derived >::RowsAtCompileTime, 1, !IsRowMajor > ConstColXpr
Definition: BlockMethods.h:15
gtsam::b
const G & b
Definition: Group.h:79
gtsam::save
void save(const Matrix &A, const string &s, const string &filename)
Definition: Matrix.cpp:166
gtsam::MultiplyWithInverse
Definition: base/Matrix.h:455
a
ArrayXXi a
Definition: Array_initializer_list_23_cxx11.cpp:1
gtsam::inplace_QR
void inplace_QR(Matrix &A)
Definition: Matrix.cpp:636
gtsam::Reshape< N, M, InOptions, M, N, InOptions >::reshape
static ReshapedType reshape(const Eigen::Matrix< double, M, N, InOptions > &in)
Definition: base/Matrix.h:275
gtsam::backSubstituteUpper
Vector backSubstituteUpper(const Matrix &U, const Vector &b, bool unit)
Definition: Matrix.cpp:375
gtsam::Reshape< N, M, InOptions, M, N, InOptions >::ReshapedType
Eigen::Matrix< double, M, N, InOptions >::ConstTransposeReturnType ReshapedType
Definition: base/Matrix.h:274
gtsam::operator!=
bool operator!=(const Matrix &A, const Matrix &B)
Definition: base/Matrix.h:106
gtsam
traits
Definition: chartTesting.h:28
gtsam::traits
Definition: Group.h:36
i1
double i1(double x)
Definition: i1.c:150
K
#define K
Definition: igam.h:8
gtsam::OptionalJacobian
Definition: OptionalJacobian.h:38
gtsam::vector_scale
Matrix vector_scale(const Vector &v, const Matrix &A, bool inf_mask)
Definition: Matrix.cpp:496
gtsam::trans
Matrix trans(const Matrix &A)
Definition: base/Matrix.h:241
gtsam::MultiplyWithInverse::MatrixN
Eigen::Matrix< double, N, N > MatrixN
Definition: base/Matrix.h:457
gtsam::backSubstituteLower
Vector backSubstituteLower(const Matrix &L, const Vector &b, bool unit)
Definition: Matrix.cpp:365
gtsam::insertSub
void insertSub(Eigen::MatrixBase< Derived1 > &fullMatrix, const Eigen::MatrixBase< Derived2 > &subMatrix, size_t i, size_t j)
Definition: base/Matrix.h:194
v
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
gtsam::Reshape< M, M, InOptions, M, M, InOptions >::reshape
static ReshapedType reshape(const Eigen::Matrix< double, M, M, InOptions > &in)
Definition: base/Matrix.h:257
gtsam::assert_equal
bool assert_equal(const Matrix &expected, const Matrix &actual, double tol)
Definition: Matrix.cpp:40
Eigen::PlainObjectBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::data
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE Scalar * data() const
Definition: PlainObjectBase.h:247
min
#define min(a, b)
Definition: datatypes.h:19
gtsam::tol
const G double tol
Definition: Group.h:79
U
@ U
Definition: testDecisionTree.cpp:296
V
MatrixXcd V
Definition: EigenSolver_EigenSolver_MatrixType.cpp:15
gtsam::Reshape< M, N, InOptions, M, N, InOptions >::ReshapedType
const typedef Eigen::Matrix< double, M, N, InOptions > & ReshapedType
Definition: base/Matrix.h:265
gtsam::assert_inequal
bool assert_inequal(const Matrix &A, const Matrix &B, double tol)
Definition: Matrix.cpp:60
Eigen::Matrix
The matrix class, also used for vectors and row-vectors.
Definition: 3rdparty/Eigen/Eigen/src/Core/Matrix.h:178
setZero
v setZero(3)
N
#define N
Definition: igam.h:9
Eigen::MatrixBase
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
gtsam::linear_independent
bool linear_independent(const Matrix &A, const Matrix &B, double tol)
Definition: Matrix.cpp:100
gtsam::collect
Matrix collect(const std::vector< const Matrix * > &matrices, size_t m, size_t n)
Definition: Matrix.cpp:441
cols
int cols
Definition: Tutorial_commainit_02.cpp:1
gtsam::Reshape< M, N, InOptions, M, N, InOptions >::reshape
static ReshapedType reshape(const Eigen::Matrix< double, M, N, InOptions > &in)
Definition: base/Matrix.h:266
ConstRowXpr
const typedef Block< const Derived, 1, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > ConstRowXpr
Definition: BlockMethods.h:18
gtsam::prod
MATRIX prod(const MATRIX &A, const MATRIX &B)
Definition: base/Matrix.h:143
gtsam::MultiplyWithInverse::VectorN
Eigen::Matrix< double, N, 1 > VectorN
Definition: base/Matrix.h:456
j1
double j1(double x)
Definition: j1.c:174
gtsam::MultiplyWithInverseFunction::MultiplyWithInverseFunction
MultiplyWithInverseFunction(const Operator &phi)
Construct with function as explained above.
Definition: base/Matrix.h:493
i
int i
Definition: BiCGSTAB_step_by_step.cpp:9
gtsam::linear_dependent
bool linear_dependent(const Matrix &A, const Matrix &B, double tol)
Definition: Matrix.cpp:114
S
DiscreteKey S(1, 2)
gtsam::formatMatrixIndented
std::string formatMatrixIndented(const std::string &label, const Matrix &matrix, bool makeVectorHorizontal)
Definition: Matrix.cpp:597
gtsam::LLt
Matrix LLt(const Matrix &A)
Definition: Matrix.cpp:521
M
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:51


gtsam
Author(s):
autogenerated on Thu Jun 13 2024 03:03:35