Disabled use of non-gtsam-namespace Vector and Matrix in wrap/matlab.h, removed two typeof uses (one more to go)
parent
d678ed3051
commit
eebef44efd
|
@ -58,7 +58,7 @@ static inline bool choleskyStep(Matrix& ATA, size_t k, size_t order) {
|
|||
|
||||
if(k < (order-1)) {
|
||||
// Update A(k,k+1:end) <- A(k,k+1:end) / beta
|
||||
typedef typeof(ATA.row(k).segment(k+1, order-(k+1))) BlockRow;
|
||||
typedef Matrix::RowXpr::SegmentReturnType BlockRow;
|
||||
BlockRow V = ATA.row(k).segment(k+1, order-(k+1));
|
||||
V *= betainv;
|
||||
|
||||
|
|
|
@ -344,7 +344,9 @@ void HessianFactor::updateATA(const JacobianFactor& update, const Scatter& scatt
|
|||
update.print("with (Jacobian): ");
|
||||
}
|
||||
|
||||
Eigen::Block<typeof(update.matrix_)> updateA(update.matrix_.block(
|
||||
// typedef Eigen::Block<typeof(update.matrix_)> BlockUpdateMatrix;
|
||||
typedef Eigen::Block<const JacobianFactor::AbMatrix> BlockUpdateMatrix;
|
||||
BlockUpdateMatrix updateA(update.matrix_.block(
|
||||
update.Ab_.rowStart(),update.Ab_.offset(0), update.Ab_.full().rows(), update.Ab_.full().cols()));
|
||||
if (debug) cout << "updateA: \n" << updateA << endl;
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ using namespace std;
|
|||
using namespace boost; // not usual, but for conciseness of generated code
|
||||
|
||||
// start GTSAM Specifics /////////////////////////////////////////////////
|
||||
typedef gtsam::Vector Vector; // NOTE: outside of gtsam namespace
|
||||
typedef gtsam::Matrix Matrix;
|
||||
//typedef gtsam::Vector Vector; // NOTE: outside of gtsam namespace
|
||||
//typedef gtsam::Matrix Matrix;
|
||||
|
||||
// to make keys be constructed from strings:
|
||||
#define GTSAM_MAGIC_KEY
|
||||
|
@ -129,8 +129,8 @@ mxArray* wrap<double>(double& value) {
|
|||
return mxCreateDoubleScalar(value);
|
||||
}
|
||||
|
||||
// wrap a const BOOST vector into a double vector
|
||||
mxArray* wrap_Vector(const Vector& v) {
|
||||
// wrap a const Eigen vector into a double vector
|
||||
mxArray* wrap_Vector(const gtsam::Vector& v) {
|
||||
int m = v.size();
|
||||
mxArray *result = mxCreateDoubleMatrix(m, 1, mxREAL);
|
||||
double *data = mxGetPr(result);
|
||||
|
@ -138,20 +138,20 @@ mxArray* wrap_Vector(const Vector& v) {
|
|||
return result;
|
||||
}
|
||||
|
||||
// specialization to BOOST vector -> double vector
|
||||
// specialization to Eigen vector -> double vector
|
||||
template<>
|
||||
mxArray* wrap<Vector >(Vector& v) {
|
||||
mxArray* wrap<gtsam::Vector >(gtsam::Vector& v) {
|
||||
return wrap_Vector(v);
|
||||
}
|
||||
|
||||
// const version
|
||||
template<>
|
||||
mxArray* wrap<const Vector >(const Vector& v) {
|
||||
mxArray* wrap<const gtsam::Vector >(const gtsam::Vector& v) {
|
||||
return wrap_Vector(v);
|
||||
}
|
||||
|
||||
// wrap a const BOOST MATRIX into a double matrix
|
||||
mxArray* wrap_Matrix(const Matrix& A) {
|
||||
// wrap a const Eigen MATRIX into a double matrix
|
||||
mxArray* wrap_Matrix(const gtsam::Matrix& A) {
|
||||
int m = A.rows(), n = A.cols();
|
||||
mxArray *result = mxCreateDoubleMatrix(m, n, mxREAL);
|
||||
double *data = mxGetPr(result);
|
||||
|
@ -160,15 +160,15 @@ mxArray* wrap_Matrix(const Matrix& A) {
|
|||
return result;
|
||||
}
|
||||
|
||||
// specialization to BOOST MATRIX -> double matrix
|
||||
// specialization to Eigen MATRIX -> double matrix
|
||||
template<>
|
||||
mxArray* wrap<Matrix >(Matrix& A) {
|
||||
mxArray* wrap<gtsam::Matrix >(gtsam::Matrix& A) {
|
||||
return wrap_Matrix(A);
|
||||
}
|
||||
|
||||
// const version
|
||||
template<>
|
||||
mxArray* wrap<const Matrix >(const Matrix& A) {
|
||||
mxArray* wrap<const gtsam::Matrix >(const gtsam::Matrix& A) {
|
||||
return wrap_Matrix(A);
|
||||
}
|
||||
|
||||
|
@ -223,16 +223,16 @@ double unwrap<double>(const mxArray* array) {
|
|||
return (double)mxGetScalar(array);
|
||||
}
|
||||
|
||||
// specialization to BOOST vector
|
||||
// specialization to Eigen vector
|
||||
template<>
|
||||
Vector unwrap< Vector >(const mxArray* array) {
|
||||
gtsam::Vector unwrap< gtsam::Vector >(const mxArray* array) {
|
||||
int m = mxGetM(array), n = mxGetN(array);
|
||||
if (mxIsDouble(array)==false || n!=1) error("unwrap<vector>: not a vector");
|
||||
#ifdef DEBUG_WRAP
|
||||
mexPrintf("unwrap< Vector > called with %dx%d argument\n", m,n);
|
||||
mexPrintf("unwrap< gtsam::Vector > called with %dx%d argument\n", m,n);
|
||||
#endif
|
||||
double* data = (double*)mxGetData(array);
|
||||
Vector v(m);
|
||||
gtsam::Vector v(m);
|
||||
for (int i=0;i<m;i++,data++) v(i) = *data;
|
||||
#ifdef DEBUG_WRAP
|
||||
gtsam::print(v);
|
||||
|
@ -240,13 +240,13 @@ Vector unwrap< Vector >(const mxArray* array) {
|
|||
return v;
|
||||
}
|
||||
|
||||
// specialization to BOOST matrix
|
||||
// specialization to Eigen matrix
|
||||
template<>
|
||||
Matrix unwrap< Matrix >(const mxArray* array) {
|
||||
gtsam::Matrix unwrap< gtsam::Matrix >(const mxArray* array) {
|
||||
if (mxIsDouble(array)==false) error("unwrap<matrix>: not a matrix");
|
||||
int m = mxGetM(array), n = mxGetN(array);
|
||||
double* data = (double*)mxGetData(array);
|
||||
Matrix A(m,n);
|
||||
gtsam::Matrix A(m,n);
|
||||
// converts from row-major to column-major
|
||||
for (int j=0;j<n;j++) for (int i=0;i<m;i++,data++) A(i,j) = *data;
|
||||
return A;
|
||||
|
|
Loading…
Reference in New Issue