Removed unused noise model cholesky
parent
f704dbe0c2
commit
5ddd28ba18
|
@ -133,29 +133,6 @@ SharedDiagonal Gaussian::QR(Matrix& Ab) const {
|
|||
return Unit::Create(maxRank);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
SharedDiagonal Gaussian::Cholesky(Matrix& Ab, size_t nFrontals) const {
|
||||
// get size(A) and maxRank
|
||||
// TODO: really no rank problems ?
|
||||
|
||||
// pre-whiten everything (cheaply if possible)
|
||||
WhitenInPlace(Ab);
|
||||
|
||||
// Form A'*A (todo: this is probably less efficient than possible)
|
||||
Ab = Ab.transpose() * Ab;
|
||||
|
||||
// Use Cholesky to factor Ab
|
||||
size_t maxrank = choleskyCareful(Ab).first;
|
||||
|
||||
// Due to numerical error the rank could appear to be more than the number
|
||||
// of variables. The important part is that it does not includes the
|
||||
// augmented b column.
|
||||
if(maxrank == (size_t) Ab.cols())
|
||||
-- maxrank;
|
||||
|
||||
return Unit::Create(maxrank);
|
||||
}
|
||||
|
||||
void Gaussian::WhitenSystem(vector<Matrix>& A, Vector& b) const {
|
||||
BOOST_FOREACH(Matrix& Aj, A) { WhitenInPlace(Aj); }
|
||||
whitenInPlace(b);
|
||||
|
|
|
@ -202,12 +202,6 @@ namespace gtsam {
|
|||
*/
|
||||
virtual boost::shared_ptr<Diagonal> QR(Matrix& Ab) const;
|
||||
|
||||
/**
|
||||
* Cholesky factorization
|
||||
* FIXME: this is never used anywhere
|
||||
*/
|
||||
virtual boost::shared_ptr<Diagonal> Cholesky(Matrix& Ab, size_t nFrontals) const;
|
||||
|
||||
/**
|
||||
* Return R itself, but note that Whiten(H) is cheaper than R*H
|
||||
*/
|
||||
|
|
|
@ -247,18 +247,6 @@ TEST( NoiseModel, QR )
|
|||
EXPECT(linear_dependent(expectedRd2,Ab2,1e-6)); // Ab was modified in place !!!
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST(NoiseModel, Cholesky)
|
||||
{
|
||||
SharedDiagonal expected = noiseModel::Unit::Create(4);
|
||||
Matrix Ab = exampleQR::Ab; // otherwise overwritten !
|
||||
SharedDiagonal actual = exampleQR::diagonal->Cholesky(Ab, 4);
|
||||
EXPECT(assert_equal(*expected,*actual));
|
||||
// Ab was modified in place !!!
|
||||
Matrix actualRd = Ab.block(0, 0, actual->dim(), Ab.cols()).triangularView<Eigen::Upper>();
|
||||
EXPECT(linear_dependent(exampleQR::Rd,actualRd,1e-4));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST(NoiseModel, QRNan )
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue