📄 vnl_matrix_inverse.h
字号:
// This is vxl/vnl/algo/vnl_matrix_inverse.h
#ifndef vnl_matrix_inverse_h_
#define vnl_matrix_inverse_h_
#ifdef VCL_NEEDS_PRAGMA_INTERFACE
#pragma interface
#endif
//:
// \file
// \brief Calculates inverse of a matrix (wrapper around vnl_svd<double>)
// \author Andrew W. Fitzgibbon, Oxford RRG
// \date 22 Nov 96
//
// \verbatim
// Modifications
// dac (Manchester) 28/03/2001: tidied up documentation
// \endverbatim
#include <vnl/algo/vnl_svd.h>
//: Calculates inverse of a matrix (wrapper around vnl_svd<double>)
// vnl_matrix_inverse is a wrapper around vnl_svd<double> that allows
// you to write
//
// x = vnl_matrix_inverse(A) * b;
//
// This is exactly equivalent to x = vnl_svd<double>(A).solve(b);
// but is arguably clearer, and also allows for the vnl_matrix_inverse
// class to be changed to use vnl_qr, say.
template <class T>
struct vnl_matrix_inverse : public vnl_svd<T>
{
vnl_matrix_inverse(vnl_matrix<T> const & M): vnl_svd<T>(M) { }
~vnl_matrix_inverse() {};
operator vnl_matrix<T> () const { return inverse(); }
};
template <class T>
inline
vnl_vector<T> operator*(vnl_matrix_inverse<T> const & i,
vnl_vector<T> const & B)
{
return i.solve(B);
}
template <class T>
inline
vnl_matrix<T> operator*(vnl_matrix_inverse<T> const & i,
vnl_matrix<T> const & B)
{
return i.solve(B);
}
#endif // vnl_matrix_inverse_h_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -