Spec-Zone.ru › Eigen3

Eigen::MatrixBase

template<typename Derived>
class Eigen::MatrixBase< Derived >

Базовый класс для всех плотных матриц, векторов и выражений.

Этот класс является базовым, от которого наследуются все типы матриц, векторов и связанные с ними типы выражений. Большая часть API Eigen содержится в этом классе и его базовых классах. Другие важные классы для API Eigen — это Matrix и VectorwiseOp.

Обратите внимание, что некоторые методы определены в других модулях, например, в модуле LU для всех функций, связанных с обращением матриц.

Шаблонные параметры
Derived является производным типом, например, типом матрицы или выражением и т.д.

При написании функции, принимающей объекты Eigen в качестве аргумента, если вы хотите, чтобы ваша функция принимала в качестве аргумента любую матрицу, вектор или выражение, просто сделайте аргументом MatrixBase. В качестве примера, вот функция printFirstRow, которая, данная матрица, вектор или выражение x, выводит первую строку x.

template<typename Derived>
void printFirstRow(const Eigen::MatrixBase<Derived>& x)
{
  cout << x.row(0) << endl;
}

Этот класс может быть расширен с помощью механизма плагинов, описанного на странице Расширение MatrixBase (и других классов), определив препроцессорный символ EIGEN_MATRIXBASE_PLUGIN.

См. также
Иерархия классов
Inheritance graph
const MatrixFunctionReturnValue< Derived > acosh () const
Эта функция требует модуля модуля MatrixFunctions. Для вычисления покомпонентного обратного гиперболического косинуса используйте ArrayBase::acosh. Подробнее...
const AdjointReturnType adjoint () const
void adjointInPlace ()
template<typename EssentialPart >
void applyHouseholderOnTheLeft (const EssentialPart &essential, const Scalar &tau, Scalar *workspace)
template<typename EssentialPart >
void applyHouseholderOnTheRight (const EssentialPart &essential, const Scalar &tau, Scalar *workspace)
template<typename OtherDerived >
void applyOnTheLeft (const EigenBase< OtherDerived > &other)
template<typename OtherScalar >
void applyOnTheLeft (Index p, Index q, const JacobiRotation< OtherScalar > &j)
template<typename OtherDerived >
void applyOnTheRight (const EigenBase< OtherDerived > &other)
template<typename OtherScalar >
void applyOnTheRight (Index p, Index q, const JacobiRotation< OtherScalar > &j)
ArrayWrapper< Derived > array ()
const ArrayWrapper< const Derived > array () const
const DiagonalWrapper< const Derived > asDiagonal () const
const MatrixFunctionReturnValue< Derived > asinh () const
Эта функция требует модуля модуля MatrixFunctions. Для вычисления покомпонентного обратного гиперболического синуса используйте ArrayBase::asinh. Подробнее...
const MatrixFunctionReturnValue< Derived > atanh () const
Эта функция требует модуля модуля MatrixFunctions. Для вычисления покомпонентного обратного гиперболического косинуса используйте ArrayBase::atanh. Подробнее...
BDCSVD< PlainObject > bdcSvd (unsigned int computationOptions=0) const
RealScalar blueNorm () const
const ColPivHouseholderQR< PlainObject > colPivHouseholderQr () const
const CompleteOrthogonalDecomposition< PlainObject > completeOrthogonalDecomposition () const
template<typename ResultType >
void computeInverseAndDetWithCheck (ResultType &inverse, typename ResultType::Scalar &determinant, bool &invertible, const RealScalar &absDeterminantThreshold=NumTraits< Scalar >::dummy_precision()) const
template<typename ResultType >
void computeInverseWithCheck (ResultType &inverse, bool &invertible, const RealScalar &absDeterminantThreshold=NumTraits< Scalar >::dummy_precision()) const
const MatrixFunctionReturnValue< Derived > cos () const
Эта функция требует модуля модуля MatrixFunctions. Для вычисления покомпонентного косинуса используйте ArrayBase::cos. Подробнее...
const MatrixFunctionReturnValue< Derived > cosh () const
Эта функция требует модуля модуля MatrixFunctions. Для вычисления покомпонентного гиперболического косинуса используйте ArrayBase::cosh. Подробнее...
template<typename OtherDerived >
PlainObject cross (const MatrixBase< OtherDerived > &other) const
template<typename OtherDerived >
PlainObject cross3 (const MatrixBase< OtherDerived > &other) const
Scalar determinant () const
DiagonalReturnType diagonal ()
ConstDiagonalReturnType diagonal () const
DiagonalDynamicIndexReturnType diagonal (Index index)
ConstDiagonalDynamicIndexReturnType diagonal (Index index) const
Индекс diagonalSize () const
template<typename OtherDerived >
ScalarBinaryOpTraits< typename internal::traits< Derived >::Скаляр, typename internal::traits< OtherDerived >::Скаляр >::ReturnType dot (const MatrixBase< OtherDerived > &other) const
EigenvaluesReturnType eigenvalues () const
Вычисляет собственные значения матрицы. Подробнее...
Matrix< Скаляр, 3, 1 > eulerAngles (Индекс a0, Индекс a1, Индекс a2) const
const MatrixExponentialReturnValue< Derived > exp () const
Для этой функции требуется модуль unsupported MatrixFunctions. Чтобы вычислить экспоненту коэффициентов, используйте ArrayBase::exp . Подробнее...
Derived & forceAlignedAccess ()
const Derived & forceAlignedAccess () const
template<bool Enable>
internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type forceAlignedAccessIf ()
template<bool Enable>
internal::add_const_on_value_type< typename internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type >::type forceAlignedAccessIf () const
const FullPivHouseholderQR< PlainObject > fullPivHouseholderQr () const
const FullPivLU< PlainObject > fullPivLu () const
const HNormalizedReturnType hnormalized () const
однородная нормализация Подробнее...
HomogeneousReturnType homogeneous () const
const HouseholderQR< PlainObject > householderQr () const
RealScalar hypotNorm () const
const Inverse< Derived > inverse () const
bool isDiagonal (const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
bool isIdentity (const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
bool isLowerTriangular (const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
template<typename OtherDerived >
bool isOrthogonal (const MatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
bool isUnitary (const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
bool isUpperTriangular (const RealScalar &prec=NumTraits< Скаляр >::dummy_precision()) const
JacobiSVD< PlainObject > jacobiSvd (unsigned int computationOptions=0) const
template<typename OtherDerived >
const Product< Derived, OtherDerived, LazyProduct > lazyProduct (const MatrixBase< OtherDerived > &other) const
const LDLT< PlainObject > ldlt () const
const LLT< PlainObject > llt () const
const MatrixLogarithmReturnValue< Derived > log () const
Для этой функции требуется модуль unsupported MatrixFunctions. Чтобы вычислить логарифм коэффициентов, используйте ArrayBase::log . Подробнее...
template<int p>
RealScalar lpNorm () const
const PartialPivLU< PlainObject > lu () const
template<typename EssentialPart >
void makeHouseholder (EssentialPart &essential, Скаляр &tau, RealScalar &beta) const
void makeHouseholderInPlace (Скаляр &tau, RealScalar &beta)
const MatrixFunctionReturnValue< Derived > matrixFunction (StemFunction f) const
Функция-помощник для модуля модуля MatrixFunctions.
NoAlias< Derived, Eigen::MatrixBase > noalias ()
RealScalar norm () const
void normalize ()
const PlainObject normalized () const
template<typename OtherDerived >
bool operator!= (const MatrixBase< OtherDerived > &other) const
template<typename DiagonalDerived >
const Product< Derived, DiagonalDerived, LazyProduct > operator* (const DiagonalBase< DiagonalDerived > &diagonal) const
template<typename OtherDerived >
const Product< Derived, OtherDerived > operator* (const MatrixBase< OtherDerived > &other) const
template<typename OtherDerived >
Derived & operator*= (const EigenBase< OtherDerived > &other)
template<typename OtherDerived >
Derived & operator+= (const MatrixBase< OtherDerived > &other)
template<typename OtherDerived >
Derived & operator-= (const MatrixBase< OtherDerived > &other)
Derived & operator= (const MatrixBase &other)
template<typename OtherDerived >
bool operator== (const MatrixBase< OtherDerived > &other) const
RealScalar operatorNorm () const
Вычисляет норму оператора L2. Подробнее...
const PartialPivLU< PlainObject > partialPivLu () const
const MatrixPowerReturnValue< Derived > pow (const RealScalar &p) const
Для вычисления этой функции требуется модуль MatrixFunctions. Для вычисления поэлементной степени используйте ArrayBase::pow. Подробнее...
const MatrixComplexPowerReturnValue< Derived > pow (const std::complex< RealScalar > &p) const
Для вычисления этой функции требуется модуль MatrixFunctions. Для вычисления поэлементной степени используйте ArrayBase::pow. Подробнее...
template<unsigned int UpLo>
MatrixBase< Derived >::template SelfAdjointViewReturnType< UpLo >::Type selfadjointView ()
template<unsigned int UpLo>
MatrixBase< Derived >::template ConstSelfAdjointViewReturnType< UpLo >::Type selfadjointView () const
Derived & setIdentity ()
Derived & setIdentity (Index rows, Index cols)
Изменяет размер до заданного значения и записывает единичное выражение (не обязательно квадратное) в *this. Подробнее...
Derived & setUnit (Index i)
Устанавливает коэффициенты *this в i-й единичный (базисный) вектор. Подробнее...
Derived & setUnit (Index newSize, Index i)
Изменяет размер до заданного newSize и записывает i-й единичный (базисный) вектор в *this. Подробнее...
const MatrixFunctionReturnValue< Derived > sin () const
Для вычисления этой функции требуется модуль MatrixFunctions. Для вычисления синуса по элементам используйте ArrayBase::sin. Подробнее...
const MatrixFunctionReturnValue< Derived > sinh () const
Для вычисления этой функции требуется модуль MatrixFunctions. Для вычисления гиперболического синуса по элементам используйте ArrayBase::sinh. Подробнее...
const SparseView< Derived > sparseView (const Scalar &m_reference=Scalar(0), const typename NumTraits< Scalar >::Real &m_epsilon=NumTraits< Scalar >::dummy_precision()) const
const MatrixSquareRootReturnValue< Derived > sqrt () const
Для вычисления этой функции требуется модуль MatrixFunctions. Для вычисления квадратного корня по элементам используйте ArrayBase::sqrt. Подробнее...
RealScalar squaredNorm () const
RealScalar stableNorm () const
void stableNormalize ()
const PlainObject stableNormalized () const
Scalar trace () const
шаблон<unsigned int Mode>
MatrixBase< Derived >::template TriangularViewReturnType< Mode >::Type triangularView ()
шаблон<unsigned int Mode>
MatrixBase< Derived >::template ConstTriangularViewReturnType< Mode >::Type triangularView () const
PlainObject unitOrthogonal (void) const
- Публичные члены-функции, унаследованные от Eigen::DenseBase< Derived >
bool all () const
bool allFinite () const
bool any () const
iterator begin ()
const_iterator begin () const
const_iterator cbegin () const
const_iterator cend () const
ColwiseReturnType colwise ()
ConstColwiseReturnType colwise () const
Index count () const
iterator end ()
const_iterator end () const
EvalReturnType eval () const
void fill (const Scalar &value)
шаблон<unsigned int Added, unsigned int Removed>
EIGEN_DEPRECATED const Derived & flagged () const
const WithFormat< Derived > format (const IOFormat &fmt) const
bool hasNaN () const
EIGEN_CONSTEXPR Index innerSize () const
шаблон<typename OtherDerived >
bool isApprox (const DenseBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
bool isApproxToConstant (const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
bool isConstant (const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
шаблон<typename OtherDerived >
bool isMuchSmallerThan (const DenseBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
шаблон<typename Derived >
bool isMuchSmallerThan (const typename NumTraits< Scalar >::Real &other, const RealScalar &prec) const
bool isOnes (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
bool isZero (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
шаблон<typename OtherDerived >
EIGEN_DEPRECATED Derived & lazyAssign (const DenseBase< OtherDerived > &other)
шаблон<int NaNPropagation>
internal::traits< Derived >::Scalar maxCoeff () const
шаблон<int NaNPropagation, typename IndexType >
internal::traits< Derived >::Scalar maxCoeff (IndexType *index) const
шаблон<int NaNPropagation, typename IndexType >
internal::traits< Derived >::Scalar maxCoeff (IndexType *row, IndexType *col) const
Scalar mean () const
template<int NaNPropagation>
internal::traits< Derived >::Scalar minCoeff () const
template<int NaNPropagation, typename IndexType >
internal::traits< Derived >::Scalar minCoeff (IndexType *index) const
template<int NaNPropagation, typename IndexType >
internal::traits< Derived >::Scalar minCoeff (IndexType *row, IndexType *col) const
const NestByValue< Derived > nestByValue () const
EIGEN_CONSTEXPR Index nonZeros () const
template<typename OtherDerived >
CommaInitializer< Derived > operator<< (const DenseBase< OtherDerived > &other)
CommaInitializer< Derived > operator<< (const Scalar &s)
Derived & operator= (const DenseBase &other)
template<typename OtherDerived >
Derived & operator= (const DenseBase< OtherDerived > &other)
template<typename OtherDerived >
Derived & operator= (const EigenBase< OtherDerived > &other)
Копирует общее выражение other в *this. Подробнее...
EIGEN_CONSTEXPR Index outerSize () const
Scalar prod () const
template<typename Func >
internal::traits< Derived >::Scalar redux (const Func &func) const
template<int RowFactor, int ColFactor>
const Replicate< Derived, RowFactor, ColFactor > replicate () const
const Replicate< Derived, Dynamic, Dynamic > replicate (Index rowFactor, Index colFactor) const
void resize (Index newSize)
void resize (Index rows, Index cols)
ReverseReturnType reverse ()
ConstReverseReturnType reverse () const
void reverseInPlace ()
RowwiseReturnType rowwise ()
ConstRowwiseReturnType rowwise () const
template<typename ThenDerived , typename ElseDerived >
const Select< Derived, ThenDerived, ElseDerived > select (const DenseBase< ThenDerived > &thenMatrix, const DenseBase< ElseDerived > &elseMatrix) const
template<typename ThenDerived >
const Select< Derived, ThenDerived, typename ThenDerived::ConstantReturnType > select (const DenseBase< ThenDerived > &thenMatrix, const typename ThenDerived::Scalar &elseScalar) const
template<typename ElseDerived >
const Select< Derived, typename ElseDerived::ConstantReturnType, ElseDerived > select (const typename ElseDerived::Scalar &thenScalar, const DenseBase< ElseDerived > &elseMatrix) const
Derived & setConstant (const Scalar &value)
Derived & setLinSpaced (const Scalar &low, const Scalar &high)
Устанавливает линейно распределённый вектор. Подробнее...
Derived & setLinSpaced (Index size, const Scalar &low, const Scalar &high)
Устанавливает линейно распределённый вектор. Подробнее...
Derived & setOnes ()
Производный & setRandom ()
Производный & setZero ()
Скаляр sum () const
шаблон<typename OtherDerived >
void swap (const DenseBase< OtherDerived > &other)
шаблон<typename OtherDerived >
void swap (PlainObjectBase< OtherDerived > &other)
TransposeReturnType transpose ()
ConstTransposeReturnType transpose () const
void transposeInPlace ()
CoeffReturnType value () const
шаблон<typename Visitor >
void visit (Visitor &func) const
- Публичные члены-функции, унаследованные от Eigen::DenseCoeffsBase< Derived, DirectWriteAccessors >
EIGEN_CONSTEXPR Индекс cols () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс colStride () const EIGEN_NOEXCEPT
Производный & derived ()
const Производный & derived () const
EIGEN_CONSTEXPR Индекс innerStride () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс outerStride () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс rows () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс rowStride () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс size () const EIGEN_NOEXCEPT
- Публичные члены-функции, унаследованные от Eigen::DenseCoeffsBase< Derived, WriteAccessors >
Скаляр & coeffRef (Индекс index)
Скаляр & coeffRef (Индекс row, Индекс col)
EIGEN_CONSTEXPR Индекс cols () const EIGEN_NOEXCEPT
Производный & derived ()
const Производный & derived () const
Скаляр & operator() (Индекс index)
Скаляр & operator() (Индекс row, Индекс col)
Скаляр & operator[] (Индекс index)
EIGEN_CONSTEXPR Индекс rows () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Индекс size () const EIGEN_NOEXCEPT
Скаляр & w ()
Скаляр & x ()
Скаляр & y ()
Скаляр & z ()
- Публичные члены-функции, унаследованные от Eigen::DenseCoeffsBase< Derived, ReadOnlyAccessors >
CoeffReturnType coeff (Индекс index) const
CoeffReturnType coeff (Индекс row, Индекс col) const
EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
Derived & derived ()
const Derived & derived () const
CoeffReturnType operator() (Index index) const
CoeffReturnType operator() (Index row, Index col) const
CoeffReturnType operator[] (Index index) const
EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
CoeffReturnType w () const
CoeffReturnType x () const
CoeffReturnType y () const
CoeffReturnType z () const
- Общедоступные методы, унаследованные от Eigen::EigenBase< Derived >
EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
Derived & derived ()
const Derived & derived () const
EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
static const IdentityReturnType Identity ()
static const IdentityReturnType Identity (Index rows, Index cols)
static const BasisReturnType Unit (Index i)
static const BasisReturnType Unit (Index size, Index i)
static const BasisReturnType UnitW ()
static const BasisReturnType UnitX ()
static const BasisReturnType UnitY ()
static const BasisReturnType UnitZ ()
- Статические публичные методы, унаследованные от Eigen::DenseBase< Derived >
static const ConstantReturnType Constant (const Scalar &value)
static const ConstantReturnType Constant (Index rows, Index cols, const Scalar &value)
static const ConstantReturnType Constant (Index size, const Scalar &value)
static const RandomAccessLinSpacedReturnType LinSpaced (const Scalar &low, const Scalar &high)
Устанавливает вектор с равномерно распределёнными значениями. Подробнее...
static const RandomAccessLinSpacedReturnType LinSpaced (Index size, const Scalar &low, const Scalar &high)
Устанавливает вектор с равномерно распределёнными значениями. Подробнее...
static EIGEN_DEPRECATED const RandomAccessLinSpacedReturnType LinSpaced (Sequential_t, const Scalar &low, const Scalar &high)
static EIGEN_DEPRECATED const RandomAccessLinSpacedReturnType LinSpaced (Sequential_t, Index size, const Scalar &low, const Scalar &high)
template<typename CustomNullaryOp >
static const CwiseNullaryOp< CustomNullaryOp, PlainObject > NullaryExpr (const CustomNullaryOp &func)
template<typename CustomNullaryOp >
static const CwiseNullaryOp< CustomNullaryOp, PlainObject > NullaryExpr (Index rows, Index cols, const CustomNullaryOp &func)
template<typename CustomNullaryOp >
static const CwiseNullaryOp< CustomNullaryOp, PlainObject > NullaryExpr (Index size, const CustomNullaryOp &func)
static const ConstantReturnType Ones ()
static const ConstantReturnType Ones (Index rows, Index cols)
static const ConstantReturnType Ones (Index size)
static const RandomReturnType Random ()
static const RandomReturnType Random (Index rows, Index cols)
static const RandomReturnType Random (Index size)
static const ConstantReturnType Zero ()
static const ConstantReturnType Zero (Index rows, Index cols)
static const ConstantReturnType Zero (Index size)
- Публичные типы, унаследованные от Eigen::DenseBase< Derived >
перечисление {
RowsAtCompileTime ,
ColsAtCompileTime ,
SizeAtCompileTime ,
MaxRowsAtCompileTime ,
MaxColsAtCompileTime ,
MaxSizeAtCompileTime ,
IsVectorAtCompileTime ,
NumDimensions ,
Flags ,
IsRowMajor ,
InnerSizeAtCompileTime ,
InnerStrideAtCompileTime ,
OuterStrideAtCompileTime
}
typedef random_access_iterator_type const_iterator
typedef random_access_iterator_type iterator
typedef Array< typename internal::traits< Derived >::Scalar, internal::traits< Derived >::RowsAtCompileTime, internal::traits< Derived >::ColsAtCompileTime, AutoAlign|(internal::traits< Derived >::Flags &RowMajorBit ? RowMajor :ColMajor), internal::traits< Derived >::MaxRowsAtCompileTime, internal::traits< Derived >::MaxColsAtCompileTime > PlainArray
typedef Matrix< typename internal::traits< Derived >::Scalar, internal::traits< Derived >::RowsAtCompileTime, internal::traits< Derived >::ColsAtCompileTime, AutoAlign|(internal::traits< Derived >::Flags &RowMajorBit ? RowMajor :ColMajor), internal::traits< Derived >::MaxRowsAtCompileTime, internal::traits< Derived >::MaxColsAtCompileTime > PlainMatrix
typedef internal::conditional< internal::is_same< typename internal::traits< Derived >::XprKind, MatrixXpr >::value, PlainMatrix, PlainArray >::type PlainObject
Тип обычной матрицы или массива, соответствующий этому выражению. Подробнее...
typedef internal::traits< Derived >::Scalar Scalar
typedef internal::traits< Derived >::StorageIndex StorageIndex
Тип, используемый для хранения индексов. Подробнее...
typedef Scalar value_type
- Публичные типы, унаследованные от Eigen::EigenBase< Derived >
typedef Eigen::Index Index
Интерфейсный тип индексов. Подробнее...
- Защищенные методы-члены, унаследованные от Eigen::DenseBase< Derived >
DenseBase ()
- Связанные функции, унаследованные от Eigen::DenseBase< Derived >
template<typename Derived >
std::ostream & operator<< (std::ostream &s, const DenseBase< Derived > &m)

acosh()

template<typename Derived >
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::acosh ( ) const

Эта функция требует модуля MatrixFunctions. Для вычисления покомпонентного обратного гиперболического косинуса используйте ArrayBase::acosh .

Возвращает
выражение обратного гиперболического косинуса матрицы *this.

adjoint()

template<typename Derived >
const MatrixBase< Derived >::AdjointReturnType Eigen::MatrixBase< Derived >::adjoint
inline
Возвращает
выражение сопряжённой транспонированной матрицы *this.

Пример:

Matrix2cf m = Matrix2cf::Random();
cout << "Here is the 2x2 complex matrix m:" << endl << m << endl;
cout << "Here is the adjoint of m:" << endl << m.adjoint() << endl;

Вывод:

Here is the 2x2 complex matrix m:
 (-0.211,0.68) (-0.605,0.823)
 (0.597,0.566)  (0.536,-0.33)
Here is the adjoint of m:
 (-0.211,-0.68)  (0.597,-0.566)
(-0.605,-0.823)    (0.536,0.33)
Предупреждение
Если вы хотите заменить матрицу её сопряжённой транспонированной, НЕ делайте это:
m = m.adjoint(); // bug!!! caused by aliasing effect
Вместо этого используйте метод adjointInPlace():
m.adjointInPlace();
Это даёт библиотеке Eigen хорошие возможности для оптимизации, или же вы можете сделать следующее:
m = m.adjoint().eval();
См. также
adjointInPlace(), transpose(), conjugate(), класс Transpose, класс internal::scalar_conjugate_op

adjointInPlace()

template<typename Derived >
void Eigen::MatrixBase< Derived >::adjointInPlace
inline

Это "локальная" версия adjoint(): она заменяет *this своей собственной транспонированной матрицей. Таким образом, выполнение

m.adjointInPlace();

имеет тот же эффект на m, что и выполнение

m = m.adjoint().eval();

и является быстрее и безопаснее, так как в последней строке кода, забыв о eval(), приводит к ошибке, вызванной алиасированием.

Однако, обратите внимание, что этот метод полезен только если вы хотите заменить матрицу её собственной сопряжённой транспонированной. Если вам нужна только сопряжённая транспонированная матрица, используйте adjoint().

Примечание
если матрица не квадратная, то *this должна быть изменяемой матрицей. Это исключает (неквадратные) фиксированные матрицы, блочные выражения и отображения.
См. также
transpose(), adjoint(), transposeInPlace()

applyHouseholderOnTheLeft()

template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheLeft ( const EssentialPart & essential,
const Scalar & tau,
Scalar * workspace
)

Применяет элементарный отражатель H, заданный \( H = I - tau v v^*\) с \( v^T = [1 essential^T] \) слева к вектору или матрице.

На входе:

Параметры
essential существенная часть вектора v
tau коэффициент масштабирования преобразования Хаусхолдера
workspace указатель на рабочее пространство с по крайней мере this->cols() элементами
См. также
MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheRight()

applyHouseholderOnTheRight()

template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheRight ( const EssentialPart & essential,
const Scalar & tau,
Scalar * workspace
)

Применяет элементарный отражатель H, заданный \( H = I - tau v v^*\) с \( v^T = [1 essential^T] \) справа к вектору или матрице.

На входе:

Параметры
essential существенная часть вектора v
tau коэффициент масштабирования преобразования Хаусхолдера
workspace указатель на рабочее пространство с по крайней мере this->rows() элементами
См. также
MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheLeft()

applyOnTheLeft() [1/2]

template<typename Derived >
template<typename OtherDerived >
void Eigen::MatrixBase< Derived >::applyOnTheLeft ( const EigenBase< OtherDerived > & other )
inline

заменяет *this на other * *this.

Пример:

Matrix3f A = Matrix3f::Random(3,3), B;
B << 0,1,0,  
     0,0,1,  
     1,0,0;
cout << "At start, A = " << endl << A << endl;
A.applyOnTheLeft(B); 
cout << "After applyOnTheLeft, A = " << endl << A << endl;

Вывод:

At start, A = 
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
After applyOnTheLeft, A = 
-0.211  0.823  0.536
 0.566 -0.605 -0.444
  0.68  0.597  -0.33

applyOnTheLeft() [2/2]

template<typename Derived >
template<typename OtherScalar >
void Eigen::MatrixBase< Derived >::applyOnTheLeft ( Index p,
Index q,
const JacobiRotation< OtherScalar > & j
)
inline

Определяется в модуле Jacobi.

#include <Eigen/Jacobi> 

Применяет вращение в плоскости j к строкам p и q матрицы *this, т.е., вычисляет B = J * B, где \( B = \left ( \begin{array}{cc} \text{*this.row}(p) \\ \text{*this.row}(q) \end{array} \right ) \).

См. также
класс JacobiRotation, MatrixBase::applyOnTheRight(), internal::apply_rotation_in_the_plane()

applyOnTheRight()

template<typename Derived >
template<typename OtherDerived >
void Eigen::MatrixBase< Derived >::applyOnTheRight ( const EigenBase< OtherDerived > & other )
inline

заменяет *this на *this * other. Эквивалентно MatrixBase::operator*=().

Пример:

Matrix3f A = Matrix3f::Random(3,3), B;
B << 0,1,0,  
     0,0,1,  
     1,0,0;
cout << "At start, A = " << endl << A << endl;
A *= B;
cout << "After A *= B, A = " << endl << A << endl;
A.applyOnTheRight(B);  // equivalent to A *= B
cout << "After applyOnTheRight, A = " << endl << A << endl;

Вывод:

At start, A = 
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
After A *= B, A = 
 -0.33   0.68  0.597
 0.536 -0.211  0.823
-0.444  0.566 -0.605
After applyOnTheRight, A = 
 0.597  -0.33   0.68
 0.823  0.536 -0.211
-0.605 -0.444  0.566

array() [1/2]

template<typename Derived >
ArrayWrapper<Derived> Eigen::MatrixBase< Derived >::array ( )
inline
Возвращает
выражение типа Array этой матрицы
См. также
ArrayBase::matrix()

array() [2/2]

template<typename Derived >
const ArrayWrapper<const Derived> Eigen::MatrixBase< Derived >::array ( ) const
inline
Возвращает
выражение типа const Array этой матрицы
См. также
ArrayBase::matrix()

asDiagonal()

шаблон<typename Производное >
const DiagonalWrapper< const Производное > Eigen::MatrixBase< Производное >::asDiagonal
inline
Возвращает
псевдовыражение диагональной матрицы с *this в качестве вектора диагональных коэффициентов

Это только для векторов (строковых или столбцовых векторов), т.е. матриц, которые известны во время компиляции как имеющие одну строку или один столбец.

Пример:

cout << Matrix3i(Vector3i(2,5,6).asDiagonal()) << endl;

Вывод:

2 0 0
0 5 0
0 0 6
См. также
класс DiagonalWrapper, класс DiagonalMatrix, diagonal(), isDiagonal()

asinh()

шаблон<typename Производное >
const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::asinh ( ) const

Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise обратной гиперболической синуса используйте ArrayBase::asinh .

Возвращает
выражение матрицы обратной гиперболической синуса *this.

atanh()

шаблон<typename Производное >
const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::atanh ( ) const

Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise обратной гиперболической косинуса используйте ArrayBase::atanh .

Возвращает
выражение матрицы обратной гиперболической косинуса *this.

bdcSvd()

шаблон<typename Производное >
BDCSVD< typename MatrixBase< Производное >::PlainObject > Eigen::MatrixBase< Производное >::bdcSvd ( unsigned int computationOptions = 0 ) const
inline

Это определено в модуле SVD.

#include <Eigen/SVD> 
Возвращает
разложение по сингулярным значениям *this, вычисленное по алгоритму Divide & Conquer
См. также
класс BDCSVD

blueNorm()

шаблон<typename Производное >
NumTraits< typename internal::traits< Производное >::Scalar >::Real Eigen::MatrixBase< Производное >::blueNorm
inline
Возвращает
l2 норму *this с использованием алгоритма Blue's. Портативная Fortran-программа для нахождения евклидовой нормы вектора, ACM TOMS, том 4, выпуск 1, 1978.

Для архитектуры/типов скаляров без векторизации эта версия намного быстрее, чем stableNorm(). В противном случае stableNorm() быстрее.

См. также
norm(), stableNorm(), hypotNorm()

colPivHouseholderQr()

шаблон<typename Производное >
const ColPivHouseholderQR< typename MatrixBase< Производное >::PlainObject > Eigen::MatrixBase< Производное >::colPivHouseholderQr
inline
Возвращает
разложение по столбцам QR с помощью преобразования Хаусхолдера *this.
См. также
класс ColPivHouseholderQR

completeOrthogonalDecomposition()

шаблон<typename Производное >
const CompleteOrthogonalDecomposition< typename MatrixBase< Производное >::PlainObject > Eigen::MatrixBase< Производное >::completeOrthogonalDecomposition
inline
Возвращает
полное ортогональное разложение *this.
См. также
класс CompleteOrthogonalDecomposition

computeInverseAndDetWithCheck()

шаблон<typename Производное >
шаблон<typename ResultType >
void Eigen::MatrixBase< Производное >::computeInverseAndDetWithCheck ( ResultType & inverse,
typename ResultType::Scalar & determinant,
bool & invertible,
const RealScalar & absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
) const
inline

Это определено в модуле LU.

#include <Eigen/LU> 

Вычисление обратной матрицы и определителя с проверкой обратимости.

Только для квадратных матриц фиксированного размера до 4x4.

Обратите внимание, что при попытке выполнить обращение на месте это приведет к копированию входной матрицы.

Параметры
inverse Ссылка на матрицу, в которую нужно сохранить обратную матрицу.
determinant Ссылка на переменную, в которую нужно сохранить определитель.
invertible Ссылка на bool переменную, в которую нужно сохранить, обратима ли матрица.
absDeterminantThreshold Необязательный параметр, контролирующий проверку обратимости. Матрица будет объявлена обратимой, если абсолютное значение ее определителя больше этого порога.

Пример:

Matrix3d m = Matrix3d::Random();
cout << "Here is the matrix m:" << endl << m << endl;
Matrix3d inverse;
bool invertible;
double determinant;
m.computeInverseAndDetWithCheck(inverse,determinant,invertible);
cout << "Its determinant is " << determinant << endl;
if(invertible) {
  cout << "It is invertible, and its inverse is:" << endl << inverse << endl;
}
else {
  cout << "It is not invertible." << endl;
}

Вывод:

Here is the matrix m:
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
Its determinant is 0.209
It is invertible, and its inverse is:
-0.199   2.23   2.84
  1.01 -0.555  -1.42
 -1.62   3.59   3.29
См. также
inverse(), computeInverseWithCheck()

computeInverseWithCheck()

шаблон<typename Производное >
шаблон<typename ResultType >
void Eigen::MatrixBase< Производное >::computeInverseWithCheck ( ResultType & inverse,
bool & invertible,
const RealScalar & absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
) const
inline

Это определено в модуле LU.

#include <Eigen/LU> 

Вычисление обратной матрицы с проверкой обратимости.

Только для квадратных матриц фиксированного размера до 4x4.

Обратите внимание, что при попытке выполнить обращение на месте это приведет к копированию входной матрицы.

Параметры
inverse Ссылка на матрицу, в которую нужно сохранить обратную матрицу.
invertible Ссылка на bool переменную, в которую нужно сохранить, обратима ли матрица.
absDeterminantThreshold Необязательный параметр, контролирующий проверку обратимости. Матрица будет объявлена обратимой, если абсолютное значение ее определителя больше этого порога.

Пример:

Matrix3d m = Matrix3d::Random();
cout << "Here is the matrix m:" << endl << m << endl;
Matrix3d inverse;
bool invertible;
m.computeInverseWithCheck(inverse,invertible);
if(invertible) {
  cout << "It is invertible, and its inverse is:" << endl << inverse << endl;
}
else {
  cout << "It is not invertible." << endl;
}

Вывод:

Here is the matrix m:
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
It is invertible, and its inverse is:
-0.199   2.23   2.84
  1.01 -0.555  -1.42
 -1.62   3.59   3.29
См. также
inverse(), computeInverseAndDetWithCheck()

cos()

шаблон<typename Производное >
const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::cos ( ) const

Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise косинуса используйте ArrayBase::cos .

Возвращает
выражение матрицы косинуса *this.

cosh()

template<typename Derived >
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cosh ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления поэлементного гиперболического косинуса используйте ArrayBase::cosh.

Возвращает
выражение матричного гиперболического косинуса *this.

determinant()

template<typename Derived >
internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::determinant
inline

Это определено в модуле LU.

#include <Eigen/LU> 
Возвращает
определитель этой матрицы

diagonal() [1/4]

template<typename Derived >
MatrixBase< Derived >::template DiagonalIndexReturnType< Index_ >::Type Eigen::MatrixBase< Derived >::diagonal
inline
Возвращает
выражение главной диагонали матрицы *this

Матрица не обязана быть квадратной.

Пример:

Matrix3i m = Matrix3i::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here are the coefficients on the main diagonal of m:" << endl
     << m.diagonal() << endl;

Вывод:

Here is the matrix m:
 7  6 -3
-2  9  6
 6 -6 -5
Here are the coefficients on the main diagonal of m:
 7
 9
-5
См. также
класс Diagonal
Возвращает
выражение DiagIndex-й под- или наддиагонали матрицы *this

Матрица не обязана быть квадратной.

Шаблонный параметр DiagIndex представляет наддиагональ, если DiagIndex > 0, и поддиагональ в противном случае. DiagIndex == 0 эквивалентно главной диагонали.

Пример:

Matrix4i m = Matrix4i::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:" << endl
     << m.diagonal<1>().transpose() << endl
     << m.diagonal<-2>().transpose() << endl;

Вывод:

Here is the matrix m:
 7  9 -5 -3
-2 -6  1  0
 6 -3  0  9
 6  6  3  9
Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:
9 1 9
6 6
См. также
MatrixBase::diagonal(), класс Diagonal

diagonal() [2/4]

template<typename Derived >
MatrixBase< Derived >::template ConstDiagonalIndexReturnType< Index_ >::Type Eigen::MatrixBase< Derived >::diagonal
inline

Это константная версия diagonal().

Это константная версия diagonal<int>().

diagonal() [3/4]

template<typename Derived >
MatrixBase< Derived >::DiagonalDynamicIndexReturnType Eigen::MatrixBase< Derived >::diagonal ( Index index )
inline
Возвращает
выражение DiagIndex-й под- или наддиагонали матрицы *this

Матрица не обязана быть квадратной.

Шаблонный параметр DiagIndex представляет наддиагональ, если DiagIndex > 0, и поддиагональ в противном случае. DiagIndex == 0 эквивалентно главной диагонали.

Пример:

Matrix4i m = Matrix4i::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:" << endl
     << m.diagonal(1).transpose() << endl
     << m.diagonal(-2).transpose() << endl;

Вывод:

Here is the matrix m:
 7  9 -5 -3
-2 -6  1  0
 6 -3  0  9
 6  6  3  9
Here are the coefficients on the 1st super-diagonal and 2nd sub-diagonal of m:
9 1 9
6 6
См. также
MatrixBase::diagonal(), класс Diagonal

diagonal() [4/4]

template<typename Derived >
MatrixBase< Derived >::ConstDiagonalDynamicIndexReturnType Eigen::MatrixBase< Derived >::diagonal ( Index index ) const
inline

Это константная версия diagonal(Index).

diagonalSize()

template<typename Derived >
Index Eigen::MatrixBase< Derived >::diagonalSize ( ) const
inline
Возвращает
размер главной диагонали, который равен min(rows(),cols()).
См. также
rows(), cols(), SizeAtCompileTime.

dot()

template<typename Derived >
template<typename OtherDerived >
ScalarBinaryOpTraits< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >::ReturnType Eigen::MatrixBase< Derived >::dot ( const MatrixBase< OtherDerived > & other ) const
inline
Возвращает
скалярное произведение *this и other.

Эта функция предназначена только для векторов (строковых или столбцовых), то есть для матриц, у которых размерности известны на этапе компиляции и которые имеют одну строку или один столбец.

Примечание
Если тип скаляра - комплексные числа, то эта функция возвращает эрмитово (сесквилярное) скалярное произведение, конъюгатно-линейное по первому аргументу и линейное по второму.
См. также
squaredNorm(), norm()

eigenvalues()

template<typename Derived >
MatrixBase< Derived >::EigenvaluesReturnType Eigen::MatrixBase< Derived >::eigenvalues
inline

Вычисляет собственные значения матрицы.

Возвращает
Столбец со значениями собственных значений.

Это определено в модуле Eigenvalues.

#include <Eigen/Eigenvalues> 

Эта функция вычисляет собственные значения с помощью класса EigenSolver (для вещественных матриц) или класса ComplexEigenSolver (для комплексных матриц).

Собственные значения повторяются в соответствии с их алгебраической кратностью, поэтому их количество равно числу строк в матрице.

Класс SelfAdjointView предоставляет лучший алгоритм для эрмитовых матриц.

Пример:

MatrixXd ones = MatrixXd::Ones(3,3);
VectorXcd eivals = ones.eigenvalues();
cout << "The eigenvalues of the 3x3 matrix of ones are:" << endl << eivals << endl;

Вывод:

The eigenvalues of the 3x3 matrix of ones are:
(-5.31e-17,0)
        (3,0)
        (0,0)
См. также
EigenSolver::eigenvalues(), ComplexEigenSolver::eigenvalues(), SelfAdjointView::eigenvalues()

exp()

template<typename Derived >
const MatrixExponentialReturnValue<Derived> Eigen::MatrixBase< Derived >::exp ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления поэлементного экспоненциального значения используйте ArrayBase::exp.

Возвращает
выражение матричной экспоненты *this.

forceAlignedAccess() [1/2]

template<typename Derived >
ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess
inline
Возвращает
выражение *this с принудительным выравниванием доступа
См. также
forceAlignedAccessIf(), класс ForceAlignedAccess

forceAlignedAccess() [2/2]

template<typename Derived >
const ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess
inline
Возвращает
выражение *this с принудительным выравниванием доступа
См. также
forceAlignedAccessIf(),класс ForceAlignedAccess

forceAlignedAccessIf() [1/2]

template<typename Derived >
template<bool Enable>
internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf ( )
inline
Возвращает
выражение *this с принудительным выравниванием доступа, если Enable истинно.
См. также
forceAlignedAccess(), класс ForceAlignedAccess

forceAlignedAccessIf() [2/2]

template<typename Derived >
template<bool Enable>
internal::add_const_on_value_type<typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type>::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf ( ) const
inline
Возвращает
выражение *this с принудительным выравниванием доступа, если Enable истинно.
См. также
forceAlignedAccess(), класс ForceAlignedAccess

fullPivHouseholderQr()

template<typename Derived >
const FullPivHouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivHouseholderQr
inline
Возвращает
полное разложение QR с выбором главного элемента методом Хаусхолдера для *this.
См. также
класс FullPivHouseholderQR

fullPivLu()

template<typename Derived >
const FullPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivLu
inline

Определяется в модуле LU.

#include <Eigen/LU> 
Возвращает
полное разложение LU с выбором главного элемента для *this.
См. также
класс FullPivLU

householderQr()

template<typename Derived >
const HouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::householderQr
inline
Возвращает
разложение QR методом Хаусхолдера для *this.
См. также
класс HouseholderQR

hypotNorm()

template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::hypotNorm
inline
Возвращает
l2 норму *this, избегая недолива и переполнения. Этот вариант использует цепочку вызовов hypot(), и он очень медленный.
См. также
norm(), stableNorm()

Identity() [1/2]

template<typename Derived >
const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity
inlinestatic
Возвращает
выражение единичной матрицы (не обязательно квадратной).

Этот вариант подходит только для MatrixBase типов фиксированного размера. Для типов динамического размера необходимо использовать вариант с аргументами размера.

Пример:

cout << Matrix<double, 3, 4>::Identity() << endl;

Вывод:

1 0 0 0
0 1 0 0
0 0 1 0
См. также
Identity(Index,Index), setIdentity(), isIdentity()

Identity() [2/2]

template<typename Derived >
const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity ( Index rows,
Index cols
)
inlinestatic
Возвращает
выражение единичной матрицы (не обязательно квадратной).

Параметры rows и cols — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом MatrixBase.

Этот вариант предназначен для типов матриц динамического размера. Для типов фиксированного размера передача rows и cols избыточна, поэтому следует использовать Identity().

Пример:

cout << MatrixXd::Identity(4, 3) << endl;

Вывод:

1 0 0
0 1 0
0 0 1
0 0 0
См. также
Identity(), setIdentity(), isIdentity()

inverse()

template<typename Derived >
const Inverse< Derived > Eigen::MatrixBase< Derived >::inverse
inline

Определяется в модуле LU.

#include <Eigen/LU> 
Возвращает
обратную матрицу к данной.

Для небольших фиксированных размеров до 4x4 этот метод использует алгебраические дополнения. В общем случае этот метод использует класс PartialPivLU.

Примечание
Данная матрица должна быть обратимой, в противном случае результат неопределён. Если вам нужна проверка обратимости, выполните следующее:
  • для фиксированных размеров до 4x4 используйте computeInverseAndDetWithCheck().
  • для общего случая используйте класс FullPivLU.
Пример:
Matrix3d m = Matrix3d::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Its inverse is:" << endl << m.inverse() << endl;
Вывод:
Here is the matrix m:
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
Its inverse is:
-0.199   2.23   2.84
  1.01 -0.555  -1.42
 -1.62   3.59   3.29
См. также
computeInverseAndDetWithCheck()

isDiagonal()

template<typename Derived >
bool Eigen::MatrixBase< Derived >::isDiagonal ( const RealScalar & prec = NumTraits<Scalar>::dummy_precision() ) const
Возвращает
true, если *this приблизительно равен диагональной матрице с точностью, заданной параметром prec.

Пример:

Matrix3d m = 10000 * Matrix3d::Identity();
m(0,2) = 1;
cout << "Here's the matrix m:" << endl << m << endl;
cout << "m.isDiagonal() returns: " << m.isDiagonal() << endl;
cout << "m.isDiagonal(1e-3) returns: " << m.isDiagonal(1e-3) << endl;
 

Вывод:

Here's the matrix m:
1e+04     0     1
    0 1e+04     0
    0     0 1e+04
m.isDiagonal() returns: 0
m.isDiagonal(1e-3) returns: 1
См. также
asDiagonal()

isIdentity()

template<typename Derived >
bool Eigen::MatrixBase< Derived >::isIdentity ( const RealScalar & prec = NumTraits<Scalar>::dummy_precision() ) const
Возвращает
true, если *this приблизительно равен единичной матрице (не обязательно квадратной) с точностью, заданной параметром prec.

Пример:

Matrix3d m = Matrix3d::Identity();
m(0,2) = 1e-4;
cout << "Here's the matrix m:" << endl << m << endl;
cout << "m.isIdentity() returns: " << m.isIdentity() << endl;
cout << "m.isIdentity(1e-3) returns: " << m.isIdentity(1e-3) << endl;

Вывод:

Here's the matrix m:
     1      0 0.0001
     0      1      0
     0      0      1
m.isIdentity() returns: 0
m.isIdentity(1e-3) returns: 1
См. также
класс CwiseNullaryOp, Identity(), Identity(Index,Index), setIdentity()

isLowerTriangular()

template<typename Derived >
bool Eigen::MatrixBase< Derived >::isLowerTriangular ( const RealScalar & prec = NumTraits<Scalar>::dummy_precision() ) const
Возвращает
true, если *this приблизительно равен нижней треугольной матрице с точностью, заданной параметром prec.
См. также
isUpperTriangular()

isOrthogonal()

template<typename Derived >
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::isOrthogonal ( const MatrixBase< OtherDerived > & other,
const RealScalar & prec = NumTraits<Scalar>::dummy_precision()
) const
Возвращает
true, если *this приблизительно ортогональна other с точностью, заданной параметром prec.

Пример:

Vector3d v(1,0,0);
Vector3d w(1e-4,0,1);
cout << "Here's the vector v:" << endl << v << endl;
cout << "Here's the vector w:" << endl << w << endl;
cout << "v.isOrthogonal(w) returns: " << v.isOrthogonal(w) << endl;
cout << "v.isOrthogonal(w,1e-3) returns: " << v.isOrthogonal(w,1e-3) << endl;

Вывод:

Here's the vector v:
1
0
0
Here's the vector w:
0.0001
     0
     1
v.isOrthogonal(w) returns: 0
v.isOrthogonal(w,1e-3) returns: 1

isUnitary()

template<typename Derived >
bool Eigen::MatrixBase< Derived >::isUnitary ( const RealScalar & prec = NumTraits<Scalar>::dummy_precision() ) const
Возвращает
true, если *this приблизительно является унитарной матрицей с точностью, заданной параметром prec. В случае, если тип Scalar - вещественные числа, унитарная матрица является ортогональной матрицей.
Примечание
Это можно использовать для проверки того, образует ли семейство векторов ортонормированный базис. Действительно, m.isUnitary() возвращает true тогда и только тогда, когда столбцы (соответственно, строки) m образуют ортонормированный базис.

Пример:

Matrix3d m = Matrix3d::Identity();
m(0,2) = 1e-4;
cout << "Here's the matrix m:" << endl << m << endl;
cout << "m.isUnitary() returns: " << m.isUnitary() << endl;
cout << "m.isUnitary(1e-3) returns: " << m.isUnitary(1e-3) << endl;

Вывод:

Here's the matrix m:
     1      0 0.0001
     0      1      0
     0      0      1
m.isUnitary() returns: 0
m.isUnitary(1e-3) returns: 1

isUpperTriangular()

template<typename Derived >
bool Eigen::MatrixBase< Derived >::isUpperTriangular ( const RealScalar & prec = NumTraits<Scalar>::dummy_precision() ) const
Возвращает
true, если *this приблизительно равен верхней треугольной матрице с точностью, заданной параметром prec.
См. также
isLowerTriangular()

jacobiSvd()

template<typename Derived >
JacobiSVD< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::jacobiSvd ( unsigned int computationOptions = 0 ) const
inline

Определяется в модуле SVD.

#include <Eigen/SVD> 
Возвращает
разложение по сингулярным значениям *this, вычисленное с помощью двусторонних преобразований Якоби.
См. также
класс JacobiSVD

lazyProduct()

template<typename Derived >
template<typename OtherDerived >
const Product< Derived, OtherDerived, LazyProduct > Eigen::MatrixBase< Derived >::lazyProduct ( const MatrixBase< OtherDerived > & other ) const
inline
Возвращает
выражение матричного произведения *this и other без неявного вычисления.

Возвращаемое произведение будет вести себя как любое другое выражение: коэффициенты произведения будут вычисляться по мере необходимости. Это может быть полезно в некоторых очень редких случаях, когда необходимо вычислить только небольшую и не связанную часть коэффициентов результата.

Предупреждение
Этот вариант матричного произведения может быть намного медленнее. Используйте его только если знаете, что делаете, и измерили реальное улучшение скорости.
См. также
operator*(const MatrixBase&)

ldlt()

template<typename Derived >
const LDLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::ldlt
inline

Определяется в модуле Cholesky.

#include <Eigen/Cholesky> 
Возвращает
разложение Холецкого с полным поворотом без квадратного корня из *this
См. также
SelfAdjointView::ldlt()

llt()

template<typename Derived >
const LLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::llt
inline

Определяется в модуле Cholesky.

#include <Eigen/Cholesky> 
Возвращает
разложение LLT для *this
См. также
SelfAdjointView::llt()

log()

template<typename Derived >
const MatrixLogarithmReturnValue<Derived> Eigen::MatrixBase< Derived >::log ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления коэффициентного логарифма используйте ArrayBase::log .

Возвращает
выражение матричного логарифма *this.

lpNorm()

template<typename Derived >
template<int p>
MatrixBase< Derived >::RealScalar Eigen::MatrixBase< Derived >::lpNorm
Возвращает
коэффициентное \( \ell^p \) норма *this, то есть возвращает p-й корень суммы p-х степеней абсолютных значений коэффициентов *this. Если p - специальное значение Eigen::Infinity, эта функция возвращает \( \ell^\infty \) норму, то есть максимальное из абсолютных значений коэффициентов *this.

Во всех случаях, если *this пусто, то возвращается значение 0.

Примечание
Для матриц эта функция не вычисляет операторную норму. То есть, если *this - матрица, то её коэффициенты интерпретируются как 1D вектор. Тем не менее, вы можете легко вычислить 1-норму и \(\infty\)-норму операторных норм матрицы, используя частичные сокращения.
См. также
norm()

lu()

template<typename Derived >
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::lu
inline

Это определено в модуле LU.

#include <Eigen/LU> 

Синоним для partialPivLu().

Возвращает
частичное разложение LU с выбором главного элемента для *this.
См. также
класс PartialPivLU

makeHouseholder()

template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::makeHouseholder ( EssentialPart & essential,
Scalar & tau,
RealScalar & beta
) const

Вычисляет элементарный отражатель H такой, что: \( H *this = [ beta 0 ... 0]^T \), где преобразование H задаётся как: \( H = I - tau v v^*\) и вектор v определяется как: \( v^T = [1 essential^T] \)

На выходе:

Параметры
essential существенная часть вектора v
tau коэффициент масштабирования преобразования Хаусхолдера
beta результат H * *this
См. также
MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheLeft(), MatrixBase::applyHouseholderOnTheRight()

makeHouseholderInPlace()

template<typename Derived >
void Eigen::MatrixBase< Derived >::makeHouseholderInPlace ( Scalar & tau,
RealScalar & beta
)

Вычисляет элементарный отражатель H такой, что: \( H *this = [ beta 0 ... 0]^T \), где преобразование H задаётся как: \( H = I - tau v v^*\) и вектор v определяется как: \( v^T = [1 essential^T] \)

Существенная часть вектора v хранится в *this.

На выходе:

Параметры
tau коэффициент масштабирования преобразования Хаусхолдера
beta результат H * *this
См. также
MatrixBase::makeHouseholder(), MatrixBase::applyHouseholderOnTheLeft(), MatrixBase::applyHouseholderOnTheRight()

noalias()

template<typename Derived >
NoAlias< Derived, MatrixBase > Eigen::MatrixBase< Derived >::noalias
Возвращает
псевдовыражение для *this с оператором =, предполагающим отсутствие алиасинга между *this и исходным выражением.

Точнее, noalias() позволяет обойти флаг EvalBeforeAssignBit. В настоящее время, даже если несколько выражений могут быть алиасами, только выражения произведения матриц имеют этот флаг. Поэтому noalias() полезно только тогда, когда исходное выражение содержит произведение матриц.

Вот несколько примеров, где noalias полезно:

D.noalias()  = A * B;
D.noalias() += A.transpose() * B;
D.noalias() -= 2 * A * B.adjoint();

С другой стороны, следующий пример приведёт к неправильному результату:

A.noalias() = A * B;

потому что результирующая матрица A также является операндом произведения матриц. Поэтому нет альтернативы, кроме как вычислить A * B во временной переменной, что является стандартным поведением при записи:

A = A * B;
См. также
класс NoAlias

norm()

template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::norm
inline
Возвращает
для векторов, l2-норму *this, и для матриц — норму Фробениуса. В обоих случаях это квадратный корень из суммы квадратов всех элементов матрицы. Для векторов это также равно квадратному корню из скалярного произведения *this на себя.
См. также
lpNorm(), dot(), squaredNorm()

normalize()

template<typename Derived >
void Eigen::MatrixBase< Derived >::normalize
inline

Нормализует вектор, т.е. делит его на его собственную норму.

Это только для векторов (строковых или столбцовых), т.е. матриц, у которых размер известен во время компиляции, и у которых либо одна строка, либо один столбец.

Предупреждение
Если входной вектор слишком мал (т.е., this->norm()==0), то *this остается без изменений.
См. также
norm(), normalized()

normalized()

template<typename Derived >
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::normalized
inline
Возвращает
выражение, равное отношению *this к его собственной норме.
Предупреждение
Если входной вектор слишком мал (т.е., this->norm()==0), то эта функция возвращает копию входных данных.

Это только для векторов (строковых или столбцовых), т.е. матриц, у которых размер известен во время компиляции, и у которых либо одна строка, либо один столбец.

См. также
norm(), normalize()

operator!=()

template<typename Derived >
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::operator!= ( const MatrixBase< OtherDerived > & other ) const
inline
Возвращает
true, если хотя бы одна пара коэффициентов *this и other не равны друг другу.
Предупреждение
При использовании скаляров с плавающей точкой, вам, вероятно, следует использовать приближенное сравнение, такое как isApprox()
См. также
isApprox(), operator==

operator*() [1/2]

template<typename Derived >
template<typename DiagonalDerived >
const Product< Derived, DiagonalDerived, LazyProduct > Eigen::MatrixBase< Derived >::operator* ( const DiagonalBase< DiagonalDerived > & a_diagonal ) const
inline
Возвращает
произведение диагональной матрицы *this на диагональную матрицу diagonal.

operator*() [2/2]

template<typename Derived >
template<typename OtherDerived >
const Product< Derived, OtherDerived > Eigen::MatrixBase< Derived >::operator* ( const MatrixBase< OtherDerived > & other ) const
inline
Возвращает
матричное произведение *this и other.
Примечание
Если вместо матричного произведения требуется поэлементное произведение, см. Cwise::operator*().
См. также
lazyProduct(), operator*=(const MatrixBase&), Cwise::operator*()

operator*=()

template<typename Derived >
template<typename OtherDerived >
Derived & Eigen::MatrixBase< Derived >::operator*= ( const EigenBase< OtherDerived > & other )
inline

заменяет *this на *this * other.

Возвращает
ссылку на *this

Пример:

Matrix3f A = Matrix3f::Random(3,3), B;
B << 0,1,0,  
     0,0,1,  
     1,0,0;
cout << "At start, A = " << endl << A << endl;
A *= B;
cout << "After A *= B, A = " << endl << A << endl;
A.applyOnTheRight(B);  // equivalent to A *= B
cout << "After applyOnTheRight, A = " << endl << A << endl;

Вывод:

At start, A = 
  0.68  0.597  -0.33
-0.211  0.823  0.536
 0.566 -0.605 -0.444
After A *= B, A = 
 -0.33   0.68  0.597
 0.536 -0.211  0.823
-0.444  0.566 -0.605
After applyOnTheRight, A = 
 0.597  -0.33   0.68
 0.823  0.536 -0.211
-0.605 -0.444  0.566

operator+=()

template<typename Derived >
template<typename OtherDerived >
Derived & Eigen::MatrixBase< Derived >::operator+= ( const MatrixBase< OtherDerived > & other )
inline

заменяет *this на *this + other.

Возвращает
ссылку на *this

operator-=()

template<typename Derived >
template<typename OtherDerived >
Derived & Eigen::MatrixBase< Derived >::operator-= ( const MatrixBase< OtherDerived > & other )
inline

заменяет *this на *this - other.

Возвращает
ссылку на *this

operator=()

template<typename Derived >
Derived & Eigen::MatrixBase< Derived >::operator= ( const MatrixBase< Derived > & other )
inline

Особый случай шаблона operator=, чтобы предотвратить генерацию компилятором стандартного operator= (проблема с g++ 4.1)

operator==()

template<typename Derived >
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::operator== ( const MatrixBase< OtherDerived > & other ) const
inline
Возвращает
true, если все коэффициенты *this и other строго равны.
Предупреждение
При использовании чисел с плавающей точкой, лучше использовать приближенное сравнение, такое как isApprox()
См. также
isApprox(), operator!=

operatorNorm()

template<typename Derived >
MatrixBase< Derived >::RealScalar Eigen::MatrixBase< Derived >::operatorNorm
inline

Вычисляет норму оператора L2.

Возвращает
Норму оператора матрицы.

Определено в модуле Eigenvalues.

#include <Eigen/Eigenvalues> 

Эта функция вычисляет норму оператора L2 матрицы, также известную как спектральная норма. Норма матрицы \( A \) определяется как

\[ \|A\|_2 = \max_x \frac{\|Ax\|_2}{\|x\|_2} \]

где максимум берется по всем векторам, а норма справа — евклидова векторная норма. Норма равна наибольшему сингулярному значению, которое является квадратным корнем наибольшего собственного значения положительно полуопределённой матрицы \( A^*A \).

Текущая реализация использует собственные значения \( A^*A \), вычисленные с помощью SelfAdjointView::eigenvalues(), для вычисления нормы оператора матрицы. Класс SelfAdjointView предлагает более эффективный алгоритм для самосопряжённых матриц.

Пример:

MatrixXd ones = MatrixXd::Ones(3,3);
cout << "The operator norm of the 3x3 matrix of ones is "
     << ones.operatorNorm() << endl;

Вывод:

The operator norm of the 3x3 matrix of ones is 3
См. также
SelfAdjointView::eigenvalues(), SelfAdjointView::operatorNorm()

partialPivLu()

template<typename Derived >
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::partialPivLu
inline

Определено в модуле LU.

#include <Eigen/LU> 
Возвращает
разложение LU с частичным выбором ведущих элементов для *this.
См. также
класс PartialPivLU

pow() [1/2]

template<typename Derived >
const MatrixPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow ( const RealScalar & p ) const

Для данной функции требуется модуль unsupported MatrixFunctions. Для вычисления поэлементной степени p используйте ArrayBase::pow .

Возвращает
выражение степени матрицы в степени p для *this.

pow() [2/2]

template<typename Derived >
const MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow ( const std::complex< RealScalar > & p ) const

Для данной функции требуется модуль unsupported MatrixFunctions. Для вычисления поэлементной степени p используйте ArrayBase::pow .

Возвращает
выражение степени матрицы в степени p для *this.

selfadjointView() [1/2]

template<typename Derived >
template<unsigned int UpLo>
MatrixBase<Derived>::template SelfAdjointViewReturnType<UpLo>::Type Eigen::MatrixBase< Derived >::selfadjointView ( )
Возвращает
выражение симметричного/самосопряжённого вида, извлечённого из верхней или нижней треугольной части текущей матрицы

Параметр UpLo может быть либо Upper либо Lower

Пример:

Matrix3i m = Matrix3i::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here is the symmetric matrix extracted from the upper part of m:" << endl
     << Matrix3i(m.selfadjointView<Upper>()) << endl;
cout << "Here is the symmetric matrix extracted from the lower part of m:" << endl
     << Matrix3i(m.selfadjointView<Lower>()) << endl;

Вывод:

Here is the matrix m:
 7  6 -3
-2  9  6
 6 -6 -5
Here is the symmetric matrix extracted from the upper part of m:
 7  6 -3
 6  9  6
-3  6 -5
Here is the symmetric matrix extracted from the lower part of m:
 7 -2  6
-2  9 -6
 6 -6 -5
См. также
класс SelfAdjointView

selfadjointView() [2/2]

template<typename Derived >
template<unsigned int UpLo>
MatrixBase<Derived>::template ConstSelfAdjointViewReturnType<UpLo>::Type Eigen::MatrixBase< Derived >::selfadjointView ( ) const

Это версия MatrixBase::selfadjointView() с ключевым словом const

setIdentity() [1/2]

template<typename Derived >
Derived & Eigen::MatrixBase< Derived >::setIdentity
inline

Записывает единичное выражение (не обязательно квадратное) в *this.

Пример:

Matrix4i m = Matrix4i::Zero();
m.block<3,3>(1,0).setIdentity();
cout << m << endl;

Вывод:

0 0 0 0
1 0 0 0
0 1 0 0
0 0 1 0
См. также
класс CwiseNullaryOp, Identity(), Identity(Index,Index), isIdentity()

setIdentity() [2/2]

template<typename Derived >
Derived & Eigen::MatrixBase< Derived >::setIdentity ( Index rows,
Index cols
)
inline

Изменяет размер до указанного размера и записывает единичное выражение (не обязательно квадратное) в *this.

Параметры
rows новое количество строк
cols новое количество столбцов

Пример:

MatrixXf m;
m.setIdentity(3, 3);
cout << m << endl;

Вывод:

1 0 0
0 1 0
0 0 1
См. также
MatrixBase::setIdentity(), класс CwiseNullaryOp, MatrixBase::Identity()

setUnit() [1/2]

template<typename Derived >
Derived & Eigen::MatrixBase< Derived >::setUnit ( Index i )
inline

Устанавливает коэффициенты *this в i-й единичный (базисный) вектор.

Параметры
i индекс уникального коэффициента, который необходимо установить в 1

Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.

См. также
MatrixBase::setIdentity(), класс CwiseNullaryOp, MatrixBase::Unit(Index,Index)

setUnit() [2/2]

template<typename Derived >
Derived & Eigen::MatrixBase< Derived >::setUnit ( Index newSize,
Index i
)
inline

Изменяет размер до заданного newSize и записывает i-й единичный (базисный) вектор в *this.

Параметры
newSize новый размер вектора
i индекс уникального коэффициента, который нужно установить в 1

Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.

См. также
MatrixBase::setIdentity(), класс CwiseNullaryOp, MatrixBase::Unit(Index,Index)

sin()

template<typename Derived >
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sin ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления синуса по коэффициентам используйте ArrayBase::sin .

Возвращает
выражение синуса матрицы *this.

sinh()

template<typename Derived >
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sinh ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления гиперболического синуса по коэффициентам используйте ArrayBase::sinh .

Возвращает
выражение гиперболического синуса матрицы *this.

sqrt()

template<typename Derived >
const MatrixSquareRootReturnValue<Derived> Eigen::MatrixBase< Derived >::sqrt ( ) const

Эта функция требует модуля unsupported MatrixFunctions. Для вычисления квадратного корня по коэффициентам используйте ArrayBase::sqrt .

Возвращает
выражение квадратного корня матрицы *this.

squaredNorm()

template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::squaredNorm
inline
Возвращает
для векторов, квадрат норму l2 *this, а для матриц — квадрат норму Фробениуса. В обоих случаях, это сумма квадратов всех элементов матрицы. Для векторов это также равно скалярному произведению *this на себя.
См. также
dot(), norm(), lpNorm()

stableNorm()

template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::stableNorm
inline
Возвращает
норму l2 *this, избегая подпотока и переполнения. Эта версия использует алгоритм блочного двухпроходного: 1 - найти абсолютный наибольший коэффициент s 2 - вычислить \( s \Vert \frac{*this}{s} \Vert \) стандартным способом

Для архитектур/типов скаляров, поддерживающих векторизацию, эта версия быстрее, чем blueNorm(). В противном случае blueNorm() намного быстрее.

См. также
norm(), blueNorm(), hypotNorm()

stableNormalize()

template<typename Derived >
void Eigen::MatrixBase< Derived >::stableNormalize
inline

Нормализует вектор, избегая подпотока и переполнения

Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.

Этот метод аналогичен методу normalize(), но он снижает риск подпотока и переполнения при вычислении нормы.

Предупреждение
Если входной вектор слишком мал (т.е., this->norm()==0), то *this остается неизменным.
См. также
stableNorm(), stableNormalized(), normalize()

stableNormalized()

template<typename Derived >
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::stableNormalized
inline
Возвращает
выражение частного от *this к его собственной норме, избегая подпотоков и переполнений.

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

Этот метод аналогичен методу normalized(), но он снижает риск подпотоков и переполнений при вычислении нормы.

Предупреждение
Если входной вектор слишком мал (т. е., this->norm()==0), то эта функция возвращает копию входного значения.
См. также
stableNorm(), stableNormalize(), normalized()

trace()

template<typename Derived >
internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::trace
inline
Возвращает
след *this, т. е. сумму коэффициентов по главной диагонали.

*this может быть любой матрицей, необязательно квадратной.

См. также
diagonal(), sum()

triangularView() [1/2]

template<typename Derived >
template<unsigned int Mode>
MatrixBase<Derived>::template TriangularViewReturnType<Mode>::Type Eigen::MatrixBase< Derived >::triangularView ( )
Возвращает
выражение треугольного вида, извлеченного из текущей матрицы

Параметр Mode может иметь следующие значения: Upper, StrictlyUpper, UnitUpper, Lower, StrictlyLower, UnitLower.

Пример:

Matrix3i m = Matrix3i::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here is the upper-triangular matrix extracted from m:" << endl
     << Matrix3i(m.triangularView<Eigen::Upper>()) << endl;
cout << "Here is the strictly-upper-triangular matrix extracted from m:" << endl
     << Matrix3i(m.triangularView<Eigen::StrictlyUpper>()) << endl;
cout << "Here is the unit-lower-triangular matrix extracted from m:" << endl
     << Matrix3i(m.triangularView<Eigen::UnitLower>()) << endl;
// FIXME need to implement output for triangularViews (Bug 885)

Вывод:

Here is the matrix m:
 7  6 -3
-2  9  6
 6 -6 -5
Here is the upper-triangular matrix extracted from m:
 7  6 -3
 0  9  6
 0  0 -5
Here is the strictly-upper-triangular matrix extracted from m:
 0  6 -3
 0  0  6
 0  0  0
Here is the unit-lower-triangular matrix extracted from m:
 1  0  0
-2  1  0
 6 -6  1
См. также
класс TriangularView

triangularView() [2/2]

template<typename Derived >
template<unsigned int Mode>
MatrixBase<Derived>::template ConstTriangularViewReturnType<Mode>::Type Eigen::MatrixBase< Derived >::triangularView ( ) const

Это версия MatrixBase::triangularView() с const.

Unit() [1/2]

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit ( Index i )
inlinestatic
Возвращает
выражение i-го единичного (базисного) вектора.

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

Этот вариант предназначен только для векторов фиксированного размера.

См. также
MatrixBase::Unit(Index,Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Unit() [2/2]

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit ( Index newSize,
Index i
)
inlinestatic
Возвращает
выражение i-го единичного (базисного) вектора.

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

См. также
MatrixBase::Unit(Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

UnitW()

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitW
inlinestatic
Возвращает
выражение единичного вектора оси W (0,0,0,1)

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

См. также
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

UnitX()

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitX
inlinestatic
Возвращает
выражение единичного вектора оси X (1{,0}^*)

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

См. также
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

UnitY()

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitY
inlinestatic
Возвращает
выражение единичного вектора оси Y (0,1{,0}^*)

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

См. также
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

UnitZ()

template<typename Derived >
const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitZ
inlinestatic
Возвращает
выражение единичного вектора оси Z (0,0,1{,0}^*)

Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.

См. также
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Документация по этому классу была сгенерирована из следующих файлов:
  • MatrixBase.h
  • LDLT.h
  • LLT.h
  • Assign.h
  • CwiseBinaryOp.h
  • CwiseNullaryOp.h
  • Diagonal.h
  • DiagonalMatrix.h
  • DiagonalProduct.h
  • Dot.h
  • ForceAlignedAccess.h
  • GeneralProduct.h
  • NoAlias.h
  • PermutationMatrix.h
  • Redux.h
  • SelfAdjointView.h
  • StableNorm.h
  • Transpose.h
  • TriangularMatrix.h
  • MatrixBaseEigenvalues.h
  • EulerAngles.h
  • Homogeneous.h
  • OrthoMethods.h
  • Householder.h
  • Jacobi.h
  • Determinant.h
  • FullPivLU.h
  • InverseImpl.h
  • PartialPivLU.h
  • ColPivHouseholderQR.h
  • CompleteOrthogonalDecomposition.h
  • FullPivHouseholderQR.h
  • HouseholderQR.h
  • SparseView.h
  • BDCSVD.h
  • JacobiSVD.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API