Changed format of Matrix::vector_scale() to switch arguments
parent
c2a6a87b81
commit
d7c67532bf
|
@ -181,7 +181,7 @@ pair<Matrix,Vector> GaussianFactor::matrix(const Ordering& ordering, bool weight
|
||||||
// divide in sigma so error is indeed 0.5*|Ax-b|
|
// divide in sigma so error is indeed 0.5*|Ax-b|
|
||||||
if (weight) {
|
if (weight) {
|
||||||
Vector t = ediv(ones(sigmas_.size()),sigmas_);
|
Vector t = ediv(ones(sigmas_.size()),sigmas_);
|
||||||
A = vector_scale(A, t);
|
A = vector_scale(t, A);
|
||||||
for (int i=0; i<b_.size(); ++i)
|
for (int i=0; i<b_.size(); ++i)
|
||||||
b(i) *= t(i);
|
b(i) *= t(i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -491,7 +491,7 @@ return collect(matrices);
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
// row scaling
|
// row scaling
|
||||||
Matrix vector_scale(const Matrix& A, const Vector& v) {
|
Matrix vector_scale(const Vector& v, const Matrix& A) {
|
||||||
Matrix M(A);
|
Matrix M(A);
|
||||||
for (int i=0; i<A.size1(); ++i) {
|
for (int i=0; i<A.size1(); ++i) {
|
||||||
for (int j=0; j<A.size2(); ++j) {
|
for (int j=0; j<A.size2(); ++j) {
|
||||||
|
@ -503,7 +503,7 @@ Matrix vector_scale(const Matrix& A, const Vector& v) {
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
// column scaling
|
// column scaling
|
||||||
Matrix vector_scale(const Vector& v, const Matrix& A) {
|
Matrix vector_scale(const Matrix& A, const Vector& v) {
|
||||||
Matrix M(A);
|
Matrix M(A);
|
||||||
for (int i=0; i<A.size1(); ++i)
|
for (int i=0; i<A.size1(); ++i)
|
||||||
for (int j=0; j<A.size2(); ++j)
|
for (int j=0; j<A.size2(); ++j)
|
||||||
|
|
|
@ -207,11 +207,11 @@ Matrix collect(size_t nrMatrices, ...);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scales a matrix row or column by the values in a vector
|
* scales a matrix row or column by the values in a vector
|
||||||
* Arguments (Matrix, Vector) scales the rows,
|
* Arguments (Matrix, Vector) scales the columns,
|
||||||
* (Vector, Matrix) scales the columns
|
* (Vector, Matrix) scales the rows
|
||||||
*/
|
*/
|
||||||
Matrix vector_scale(const Matrix& A, const Vector& v); // row
|
Matrix vector_scale(const Vector& v, const Matrix& A); // row
|
||||||
Matrix vector_scale(const Vector& v, const Matrix& A); // column
|
Matrix vector_scale(const Matrix& A, const Vector& v); // column
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* skew symmetric matrix returns this:
|
* skew symmetric matrix returns this:
|
||||||
|
|
|
@ -121,7 +121,7 @@ NonlinearConstraint1<Config>::linearize(const Config& config, const VectorConfig
|
||||||
Matrix grad = gradG_(config, this->keys());
|
Matrix grad = gradG_(config, this->keys());
|
||||||
|
|
||||||
// construct probabilistic factor
|
// construct probabilistic factor
|
||||||
Matrix A1 = vector_scale(grad, lambda);
|
Matrix A1 = vector_scale(lambda, grad);
|
||||||
GaussianFactor::shared_ptr factor(new
|
GaussianFactor::shared_ptr factor(new
|
||||||
GaussianFactor(key_, A1, this->lagrange_key_, eye(this->p_), zero(this->p_), 1.0));
|
GaussianFactor(key_, A1, this->lagrange_key_, eye(this->p_), zero(this->p_), 1.0));
|
||||||
|
|
||||||
|
@ -218,8 +218,8 @@ NonlinearConstraint2<Config>::linearize(const Config& config, const VectorConfig
|
||||||
Matrix grad2 = gradG2_(config, this->keys());
|
Matrix grad2 = gradG2_(config, this->keys());
|
||||||
|
|
||||||
// construct probabilistic factor
|
// construct probabilistic factor
|
||||||
Matrix A1 = vector_scale(grad1, lambda);
|
Matrix A1 = vector_scale(lambda, grad1);
|
||||||
Matrix A2 = vector_scale(grad2, lambda);
|
Matrix A2 = vector_scale(lambda, grad2);
|
||||||
GaussianFactor::shared_ptr factor(new
|
GaussianFactor::shared_ptr factor(new
|
||||||
GaussianFactor(key1_, A1, key2_, A2,
|
GaussianFactor(key1_, A1, key2_, A2,
|
||||||
this->lagrange_key_, eye(this->p_), zero(this->p_), 1.0));
|
this->lagrange_key_, eye(this->p_), zero(this->p_), 1.0));
|
||||||
|
|
|
@ -167,7 +167,7 @@ TEST( matrix, scale_columns )
|
||||||
|
|
||||||
Vector v = Vector_(4, 2., 3., 4., 5.);
|
Vector v = Vector_(4, 2., 3., 4., 5.);
|
||||||
|
|
||||||
Matrix actual = vector_scale(v,A);
|
Matrix actual = vector_scale(A,v);
|
||||||
|
|
||||||
Matrix expected(3,4);
|
Matrix expected(3,4);
|
||||||
expected(0,0) = 2.; expected(0,1) = 3.; expected(0,2)= 4.; expected(0,3)= 5.;
|
expected(0,0) = 2.; expected(0,1) = 3.; expected(0,2)= 4.; expected(0,3)= 5.;
|
||||||
|
@ -187,7 +187,7 @@ TEST( matrix, scale_rows )
|
||||||
|
|
||||||
Vector v = Vector_(3, 2., 3., 4.);
|
Vector v = Vector_(3, 2., 3., 4.);
|
||||||
|
|
||||||
Matrix actual = vector_scale(A,v);
|
Matrix actual = vector_scale(v,A);
|
||||||
|
|
||||||
Matrix expected(3,4);
|
Matrix expected(3,4);
|
||||||
expected(0,0) = 2.; expected(0,1) = 2.; expected(0,2)= 2.; expected(0,3)= 2.;
|
expected(0,0) = 2.; expected(0,1) = 2.; expected(0,2)= 2.; expected(0,3)= 2.;
|
||||||
|
|
Loading…
Reference in New Issue