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.
- См. также
- Иерархия классов
| 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 |
|
| |
| 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_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 |
|
| |
| Скаляр & | 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 () |
|
| |
| 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_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 () |
|
| |
| 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) |
|
| |
| перечисление | { 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 |
|
| |
| typedef Eigen::Index | Index |
| Интерфейсный тип индексов. Подробнее... |
|
|
| |
| DenseBase () | |
|
| |
| template<typename Derived > | |
| std::ostream & | operator<< (std::ostream &s, const DenseBase< Derived > &m) |
acosh()
| const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::acosh | ( | ) | const |
Эта функция требует модуля MatrixFunctions. Для вычисления покомпонентного обратного гиперболического косинуса используйте ArrayBase::acosh .
- Возвращает
- выражение обратного гиперболического косинуса матрицы
*this.
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()
| inline |
Это "локальная" версия adjoint(): она заменяет *this своей собственной транспонированной матрицей. Таким образом, выполнение
m.adjointInPlace();
имеет тот же эффект на m, что и выполнение
m = m.adjoint().eval();
и является быстрее и безопаснее, так как в последней строке кода, забыв о eval(), приводит к ошибке, вызванной алиасированием.
Однако, обратите внимание, что этот метод полезен только если вы хотите заменить матрицу её собственной сопряжённой транспонированной. Если вам нужна только сопряжённая транспонированная матрица, используйте adjoint().
- Примечание
- если матрица не квадратная, то
*thisдолжна быть изменяемой матрицей. Это исключает (неквадратные) фиксированные матрицы, блочные выражения и отображения.
- См. также
- transpose(), adjoint(), transposeInPlace()
applyHouseholderOnTheLeft()
| 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 существенная часть вектора vtau коэффициент масштабирования преобразования Хаусхолдера workspace указатель на рабочее пространство с по крайней мере this->cols() элементами
applyHouseholderOnTheRight()
| 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 существенная часть вектора vtau коэффициент масштабирования преобразования Хаусхолдера workspace указатель на рабочее пространство с по крайней мере this->rows() элементами
applyOnTheLeft() [1/2]
| 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]
| 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()
| 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]
| inline |
- Возвращает
- выражение типа Array этой матрицы
- См. также
- ArrayBase::matrix()
array() [2/2]
| inline |
- Возвращает
- выражение типа const Array этой матрицы
- См. также
- ArrayBase::matrix()
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()
| const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::asinh | ( | ) | const |
Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise обратной гиперболической синуса используйте ArrayBase::asinh .
- Возвращает
- выражение матрицы обратной гиперболической синуса
*this.
atanh()
| const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::atanh | ( | ) | const |
Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise обратной гиперболической косинуса используйте ArrayBase::atanh .
- Возвращает
- выражение матрицы обратной гиперболической косинуса
*this.
bdcSvd()
| inline |
Это определено в модуле SVD.
#include <Eigen/SVD>
- Возвращает
- разложение по сингулярным значениям
*this, вычисленное по алгоритму Divide & Conquer
- См. также
- класс BDCSVD
blueNorm()
| inline |
- Возвращает
- l2 норму
*thisс использованием алгоритма Blue's. Портативная Fortran-программа для нахождения евклидовой нормы вектора, ACM TOMS, том 4, выпуск 1, 1978.
Для архитектуры/типов скаляров без векторизации эта версия намного быстрее, чем stableNorm(). В противном случае stableNorm() быстрее.
- См. также
- norm(), stableNorm(), hypotNorm()
colPivHouseholderQr()
| inline |
- Возвращает
- разложение по столбцам QR с помощью преобразования Хаусхолдера
*this.
- См. также
- класс ColPivHouseholderQR
completeOrthogonalDecomposition()
| inline |
- Возвращает
- полное ортогональное разложение
*this.
- См. также
- класс CompleteOrthogonalDecomposition
computeInverseAndDetWithCheck()
| 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()
| 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()
| const MatrixFunctionReturnValue<Производное> Eigen::MatrixBase< Производное >::cos | ( | ) | const |
Для этой функции требуется модуль unsupported MatrixFunctions. Для вычисления коэффициентно-wise косинуса используйте ArrayBase::cos .
- Возвращает
- выражение матрицы косинуса
*this.
cosh()
| const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cosh | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления поэлементного гиперболического косинуса используйте ArrayBase::cosh.
- Возвращает
- выражение матричного гиперболического косинуса
*this.
determinant()
| inline |
Это определено в модуле LU.
#include <Eigen/LU>
- Возвращает
- определитель этой матрицы
diagonal() [1/4]
| 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]
| inline |
Это константная версия diagonal().
Это константная версия diagonal<int>().
diagonal() [3/4]
| 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]
| inline |
Это константная версия diagonal(Index).
diagonalSize()
| inline |
- См. также
- rows(), cols(), SizeAtCompileTime.
dot()
| inline |
- Возвращает
- скалярное произведение *this и other.
Эта функция предназначена только для векторов (строковых или столбцовых), то есть для матриц, у которых размерности известны на этапе компиляции и которые имеют одну строку или один столбец.
- Примечание
- Если тип скаляра - комплексные числа, то эта функция возвращает эрмитово (сесквилярное) скалярное произведение, конъюгатно-линейное по первому аргументу и линейное по второму.
- См. также
- squaredNorm(), norm()
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)
exp()
| const MatrixExponentialReturnValue<Derived> Eigen::MatrixBase< Derived >::exp | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления поэлементного экспоненциального значения используйте ArrayBase::exp.
- Возвращает
- выражение матричной экспоненты
*this.
forceAlignedAccess() [1/2]
| inline |
- Возвращает
- выражение *this с принудительным выравниванием доступа
- См. также
- forceAlignedAccessIf(), класс ForceAlignedAccess
forceAlignedAccess() [2/2]
| inline |
- Возвращает
- выражение *this с принудительным выравниванием доступа
- См. также
- forceAlignedAccessIf(),класс ForceAlignedAccess
forceAlignedAccessIf() [1/2]
| inline |
- Возвращает
- выражение *this с принудительным выравниванием доступа, если Enable истинно.
- См. также
- forceAlignedAccess(), класс ForceAlignedAccess
forceAlignedAccessIf() [2/2]
| inline |
- Возвращает
- выражение *this с принудительным выравниванием доступа, если Enable истинно.
- См. также
- forceAlignedAccess(), класс ForceAlignedAccess
fullPivHouseholderQr()
| inline |
- Возвращает
- полное разложение QR с выбором главного элемента методом Хаусхолдера для
*this.
- См. также
- класс FullPivHouseholderQR
fullPivLu()
| inline |
Определяется в модуле LU.
#include <Eigen/LU>
- Возвращает
- полное разложение LU с выбором главного элемента для
*this.
- См. также
- класс FullPivLU
householderQr()
| inline |
- Возвращает
- разложение QR методом Хаусхолдера для
*this.
- См. также
- класс HouseholderQR
hypotNorm()
| inline |
- Возвращает
- l2 норму
*this, избегая недолива и переполнения. Этот вариант использует цепочку вызовов hypot(), и он очень медленный.
- См. также
- norm(), stableNorm()
Identity() [1/2]
| 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]
| 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()
| 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()
| 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()
| 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()
| bool Eigen::MatrixBase< Derived >::isLowerTriangular | ( | const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision()
|
) | const |
- Возвращает
- true, если *this приблизительно равен нижней треугольной матрице с точностью, заданной параметром prec.
- См. также
- isUpperTriangular()
isOrthogonal()
| 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()
| 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()
| bool Eigen::MatrixBase< Derived >::isUpperTriangular | ( | const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision()
|
) | const |
- Возвращает
- true, если *this приблизительно равен верхней треугольной матрице с точностью, заданной параметром prec.
- См. также
- isLowerTriangular()
jacobiSvd()
| inline |
Определяется в модуле SVD.
#include <Eigen/SVD>
- Возвращает
- разложение по сингулярным значениям
*this, вычисленное с помощью двусторонних преобразований Якоби.
- См. также
- класс JacobiSVD
lazyProduct()
| inline |
- Возвращает
- выражение матричного произведения
*thisи other без неявного вычисления.
Возвращаемое произведение будет вести себя как любое другое выражение: коэффициенты произведения будут вычисляться по мере необходимости. Это может быть полезно в некоторых очень редких случаях, когда необходимо вычислить только небольшую и не связанную часть коэффициентов результата.
- Предупреждение
- Этот вариант матричного произведения может быть намного медленнее. Используйте его только если знаете, что делаете, и измерили реальное улучшение скорости.
- См. также
- operator*(const MatrixBase&)
ldlt()
| inline |
Определяется в модуле Cholesky.
#include <Eigen/Cholesky>
- Возвращает
- разложение Холецкого с полным поворотом без квадратного корня из
*this
- См. также
- SelfAdjointView::ldlt()
llt()
| inline |
Определяется в модуле Cholesky.
#include <Eigen/Cholesky>
- Возвращает
- разложение LLT для
*this
- См. также
- SelfAdjointView::llt()
log()
| const MatrixLogarithmReturnValue<Derived> Eigen::MatrixBase< Derived >::log | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления коэффициентного логарифма используйте ArrayBase::log .
- Возвращает
- выражение матричного логарифма
*this.
lpNorm()
| 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()
| inline |
Это определено в модуле LU.
#include <Eigen/LU>
Синоним для partialPivLu().
- Возвращает
- частичное разложение LU с выбором главного элемента для
*this.
- См. также
- класс PartialPivLU
makeHouseholder()
| 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 существенная часть вектора vtau коэффициент масштабирования преобразования Хаусхолдера beta результат H * *this
makeHouseholderInPlace()
| 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
noalias()
| 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()
| inline |
- Возвращает
- для векторов, l2-норму
*this, и для матриц — норму Фробениуса. В обоих случаях это квадратный корень из суммы квадратов всех элементов матрицы. Для векторов это также равно квадратному корню из скалярного произведения*thisна себя.
- См. также
- lpNorm(), dot(), squaredNorm()
normalize()
| inline |
Нормализует вектор, т.е. делит его на его собственную норму.
Это только для векторов (строковых или столбцовых), т.е. матриц, у которых размер известен во время компиляции, и у которых либо одна строка, либо один столбец.
- Предупреждение
- Если входной вектор слишком мал (т.е., this->norm()==0), то
*thisостается без изменений.
- См. также
- norm(), normalized()
normalized()
| inline |
- Возвращает
- выражение, равное отношению
*thisк его собственной норме.
- Предупреждение
- Если входной вектор слишком мал (т.е., this->norm()==0), то эта функция возвращает копию входных данных.
Это только для векторов (строковых или столбцовых), т.е. матриц, у которых размер известен во время компиляции, и у которых либо одна строка, либо один столбец.
- См. также
- norm(), normalize()
operator!=()
| inline |
- Возвращает
- true, если хотя бы одна пара коэффициентов
*thisи other не равны друг другу.
- Предупреждение
- При использовании скаляров с плавающей точкой, вам, вероятно, следует использовать приближенное сравнение, такое как isApprox()
- См. также
- isApprox(), operator==
operator*() [1/2]
| inline |
- Возвращает
- произведение диагональной матрицы
*thisна диагональную матрицу diagonal.
operator*() [2/2]
| inline |
- Возвращает
- матричное произведение
*thisи other.
- Примечание
- Если вместо матричного произведения требуется поэлементное произведение, см. Cwise::operator*().
- См. также
- lazyProduct(), operator*=(const MatrixBase&), Cwise::operator*()
operator*=()
| 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+=()
| inline |
заменяет *this на *this + other.
- Возвращает
- ссылку на
*this
operator-=()
| inline |
заменяет *this на *this - other.
- Возвращает
- ссылку на
*this
operator=()
| inline |
Особый случай шаблона operator=, чтобы предотвратить генерацию компилятором стандартного operator= (проблема с g++ 4.1)
operator==()
| inline |
- Возвращает
- true, если все коэффициенты
*thisи other строго равны.
- Предупреждение
- При использовании чисел с плавающей точкой, лучше использовать приближенное сравнение, такое как isApprox()
- См. также
- isApprox(), operator!=
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
partialPivLu()
| inline |
Определено в модуле LU.
#include <Eigen/LU>
- Возвращает
- разложение LU с частичным выбором ведущих элементов для
*this.
- См. также
- класс PartialPivLU
pow() [1/2]
| const MatrixPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow | ( | const RealScalar & | p | ) | const |
Для данной функции требуется модуль unsupported MatrixFunctions. Для вычисления поэлементной степени p используйте ArrayBase::pow .
- Возвращает
- выражение степени матрицы в степени
pдля*this.
pow() [2/2]
| const MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow | ( | const std::complex< RealScalar > & | p | ) | const |
Для данной функции требуется модуль unsupported MatrixFunctions. Для вычисления поэлементной степени p используйте ArrayBase::pow .
- Возвращает
- выражение степени матрицы в степени
pдля*this.
selfadjointView() [1/2]
| 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]
| MatrixBase<Derived>::template ConstSelfAdjointViewReturnType<UpLo>::Type Eigen::MatrixBase< Derived >::selfadjointView | ( | ) | const |
Это версия MatrixBase::selfadjointView() с ключевым словом const
setIdentity() [1/2]
| 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]
| 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]
| inline |
Устанавливает коэффициенты *this в i-й единичный (базисный) вектор.
- Параметры
-
i индекс уникального коэффициента, который необходимо установить в 1
Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.
- См. также
- MatrixBase::setIdentity(), класс CwiseNullaryOp, MatrixBase::Unit(Index,Index)
setUnit() [2/2]
| inline |
Изменяет размер до заданного newSize и записывает i-й единичный (базисный) вектор в *this.
- Параметры
-
newSize новый размер вектора i индекс уникального коэффициента, который нужно установить в 1
Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.
- См. также
- MatrixBase::setIdentity(), класс CwiseNullaryOp, MatrixBase::Unit(Index,Index)
sin()
| const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sin | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления синуса по коэффициентам используйте ArrayBase::sin .
- Возвращает
- выражение синуса матрицы
*this.
sinh()
| const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sinh | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления гиперболического синуса по коэффициентам используйте ArrayBase::sinh .
- Возвращает
- выражение гиперболического синуса матрицы
*this.
sqrt()
| const MatrixSquareRootReturnValue<Derived> Eigen::MatrixBase< Derived >::sqrt | ( | ) | const |
Эта функция требует модуля unsupported MatrixFunctions. Для вычисления квадратного корня по коэффициентам используйте ArrayBase::sqrt .
- Возвращает
- выражение квадратного корня матрицы
*this.
squaredNorm()
| inline |
stableNorm()
| inline |
- Возвращает
- норму l2
*this, избегая подпотока и переполнения. Эта версия использует алгоритм блочного двухпроходного: 1 - найти абсолютный наибольший коэффициентs2 - вычислить \( s \Vert \frac{*this}{s} \Vert \) стандартным способом
Для архитектур/типов скаляров, поддерживающих векторизацию, эта версия быстрее, чем blueNorm(). В противном случае blueNorm() намного быстрее.
- См. также
- norm(), blueNorm(), hypotNorm()
stableNormalize()
| inline |
Нормализует вектор, избегая подпотока и переполнения
Это относится только к векторам (строковым или столбцовым векторам), т.е. матрицам, у которых в момент компиляции известно, что у них либо одна строка, либо один столбец.
Этот метод аналогичен методу normalize(), но он снижает риск подпотока и переполнения при вычислении нормы.
- Предупреждение
- Если входной вектор слишком мал (т.е., this->norm()==0), то
*thisостается неизменным.
- См. также
- stableNorm(), stableNormalized(), normalize()
stableNormalized()
| inline |
- Возвращает
- выражение частного от
*thisк его собственной норме, избегая подпотоков и переполнений.
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
Этот метод аналогичен методу normalized(), но он снижает риск подпотоков и переполнений при вычислении нормы.
- Предупреждение
- Если входной вектор слишком мал (т. е., this->norm()==0), то эта функция возвращает копию входного значения.
- См. также
- stableNorm(), stableNormalize(), normalized()
trace()
| inline |
- Возвращает
- след
*this, т. е. сумму коэффициентов по главной диагонали.
*this может быть любой матрицей, необязательно квадратной.
- См. также
- diagonal(), sum()
triangularView() [1/2]
| 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]
| MatrixBase<Derived>::template ConstTriangularViewReturnType<Mode>::Type Eigen::MatrixBase< Derived >::triangularView | ( | ) | const |
Это версия MatrixBase::triangularView() с const.
Unit() [1/2]
| inlinestatic |
- Возвращает
- выражение i-го единичного (базисного) вектора.
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
Этот вариант предназначен только для векторов фиксированного размера.
Unit() [2/2]
| inlinestatic |
- Возвращает
- выражение i-го единичного (базисного) вектора.
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
UnitW()
| inlinestatic |
- Возвращает
- выражение единичного вектора оси W (0,0,0,1)
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
UnitX()
| inlinestatic |
- Возвращает
- выражение единичного вектора оси X (1{,0}^*)
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
UnitY()
| inlinestatic |
- Возвращает
- выражение единичного вектора оси Y (0,1{,0}^*)
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
UnitZ()
| inlinestatic |
- Возвращает
- выражение единичного вектора оси Z (0,0,1{,0}^*)
Это предназначено только для векторов (строчных или столбцовых), то есть матриц, которые на этапе компиляции известны как имеющие одну строку или один столбец.
- 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