Eigen::DenseBase
template<typename Derived>
class Eigen::DenseBase< Derived >
Базовый класс для всех плотных матриц, векторов и массивов.
Этот класс является базовым, от которого наследуются все плотные объекты (матрицы, векторы, массивы и связанные типы выражений). Общий API Eigen для плотных объектов содержится в этом классе.
- Шаблонные параметры
-
Derived является типом производного класса, например, типом матрицы или выражения.
Этот класс можно расширить с помощью механизма плагинов, описанного на странице Расширение MatrixBase (и других классов), определив препроцессорную директиву EIGEN_DENSEBASE_PLUGIN.
- См. также
- Иерархия классов
| enum | { 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 |
| Интерфейсный тип индексов. Подробнее... |
|
| 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 |
| Индекс | count () const |
| iterator | end () |
| const_iterator | end () const |
| EvalReturnType | eval () const |
| void | fill (const Scalar &value) |
| template<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 Индекс | innerSize () const |
| template<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 |
| template<typename OtherDerived > | |
| bool | isMuchSmallerThan (const DenseBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
| template<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 |
| template<typename OtherDerived > | |
| EIGEN_DEPRECATED Derived & | lazyAssign (const DenseBase< OtherDerived > &other) |
| template<int NaNPropagation> | |
| internal::traits< Derived >::Scalar | maxCoeff () const |
| template<int NaNPropagation, typename IndexType > | |
| internal::traits< Derived >::Scalar | maxCoeff (IndexType *index) const |
| template<int NaNPropagation, typename IndexType > | |
| internal::traits< Derived >::Scalar | maxCoeff (IndexType *row, IndexType *col) const |
| Скаляр | mean () const |
| template<int NaNPropagation> | |
| internal::traits< Derived >::Скаляр | minCoeff () const |
| template<int NaNPropagation, typename IndexType > | |
| internal::traits< Derived >::Скаляр | minCoeff (IndexType *index) const |
| template<int NaNPropagation, typename IndexType > | |
| internal::traits< Derived >::Скаляр | minCoeff (IndexType *row, IndexType *col) const |
| const NestByValue< Derived > | nestByValue () const |
| EIGEN_CONSTEXPR Индекс | 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 () |
| Derived & | setRandom () |
| Derived & | setZero () |
| Scalar | sum () const |
| template<typename OtherDerived > | |
| void | swap (const DenseBase< OtherDerived > &other) |
| template<typename OtherDerived > | |
| void | swap (PlainObjectBase< OtherDerived > &other) |
| TransposeReturnType | transpose () |
| ConstTransposeReturnType | transpose () const |
| void | transposeInPlace () |
| CoeffReturnType | value () const |
| template<typename Visitor > | |
| void | visit (Visitor &func) const |
|
| |
| EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | colStride () const EIGEN_NOEXCEPT |
| Derived & | derived () |
| const Derived & | derived () const |
| EIGEN_CONSTEXPR Index | innerStride () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | outerStride () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | rowStride () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
|
| |
| Scalar & | coeffRef (Index index) |
| Scalar & | coeffRef (Index row, Index col) |
| EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
| Derived & | derived () |
| const Derived & | derived () const |
| Scalar & | operator() (Index index) |
| Scalar & | operator() (Index row, Index col) |
| Scalar & | operator[] (Index index) |
| EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
| EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
| Scalar & | w () |
| Scalar & | x () |
| Scalar & | y () |
| Scalar & | z () |
|
| |
| CoeffReturnType | coeff (Index index) const |
| CoeffReturnType | coeff (Index row, Index 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 |
| Возвращаемый тип коэффициента | w () const |
| Возвращаемый тип коэффициента | x () const |
| Возвращаемый тип коэффициента | y () const |
| Возвращаемый тип коэффициента | 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 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) |
| DenseBase () | |
|
(Обратите внимание, что это не члены функций.) | |
| template<typename Derived > | |
| std::ostream & | operator<< (std::ostream &s, const DenseBase< Derived > &m) |
const_iterator
| typedef random_access_iterator_type Eigen::DenseBase< Derived >::const_iterator |
Это константная версия итератора (т.е. только для чтения).
iterator
| typedef random_access_iterator_type Eigen::DenseBase< Derived >::iterator |
Итератор типа RandomAccessIterator (похожий на STL), возвращаемый методами begin() и end().
PlainArray
| 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 > Eigen::DenseBase< Derived >::PlainArray |
Тип обычного массива, соответствующий этому выражению.
- См. также
- PlainObject
PlainMatrix
| 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 > Eigen::DenseBase< Derived >::PlainMatrix |
Тип обычной матрицы, соответствующий этому выражению.
- См. также
- PlainObject
PlainObject
| typedef internal::conditional<internal::is_same<typename internal::traits<Derived>::XprKind,MatrixXpr >::value, PlainMatrix, PlainArray>::type Eigen::DenseBase< Derived >::PlainObject |
Тип обычной матрицы или массива, соответствующий этому выражению.
Это не обязательно точно тип возвращаемого значения eval(). В случае обычных матриц тип возвращаемого значения eval() — это константная ссылка на матрицу, а не сама матрица! Однако гарантируется, что тип возвращаемого значения eval() — это либо PlainObject, либо const PlainObject&.
Scalar
| typedef internal::traits<Derived>::Scalar Eigen::DenseBase< Derived >::Scalar |
Числовой тип коэффициентов выражения, например, float, double, int или std::complex<float> и т. д.
StorageIndex
| typedef internal::traits<Derived>::StorageIndex Eigen::DenseBase< Derived >::StorageIndex |
Тип, используемый для хранения индексов.
Этот typedef релевантен для типов, хранящих несколько индексов, таких как PermutationMatrix или Transpositions, в противном случае он по умолчанию равен Eigen::Index.
- См. также
- Директивы препроцессора, Eigen::Index, SparseMatrixBase.
value_type
| typedef Scalar Eigen::DenseBase< Derived >::value_type |
Числовой тип коэффициентов выражения, например, float, double, int или std::complex<float> и т. д.
Это псевдоним типа Scalar.
anonymous enum
| anonymous enum |
| Перечислитель | |
|---|---|
| RowsAtCompileTime |
Количество строк на этапе компиляции. Это просто копия значения, предоставленного типом Derived. Если значение неизвестно на этапе компиляции, оно устанавливается в константу Dynamic. |
| ColsAtCompileTime |
Количество столбцов на этапе компиляции. Это просто копия значения, предоставленного типом Derived. Если значение неизвестно на этапе компиляции, оно устанавливается в константу Dynamic. |
| SizeAtCompileTime |
Это равно количеству коэффициентов, т.е. количеству строк, умноженному на количество столбцов, или Dynamic, если это неизвестно на этапе компиляции.
|
| MaxRowsAtCompileTime |
Это значение равно максимальному возможному количеству строк, которое может иметь данное выражение. Если это выражение может иметь произвольно большое количество строк, это значение устанавливается в Dynamic. Это значение полезно при оценке выражения для определения возможности избежать динамического выделения памяти. |
| MaxColsAtCompileTime |
Это значение равно максимальному возможному количеству столбцов, которое может иметь данное выражение. Если это выражение может иметь произвольно большое количество столбцов, это значение устанавливается в Dynamic. Это значение полезно при оценке выражения для определения возможности избежать динамического выделения памяти. |
| MaxSizeAtCompileTime |
Это значение равно максимальному возможному количеству коэффициентов, которое может иметь данное выражение. Если это выражение может иметь произвольно большое количество коэффициентов, это значение устанавливается в Dynamic. Это значение полезно при оценке выражения для определения возможности избежать динамического выделения памяти. |
| IsVectorAtCompileTime |
Устанавливается в true, если количество строк или столбцов известно на этапе компиляции и равно 1. В этом случае мы имеем дело с вектор-столбцом (если столбцов только один) или вектор-строкой (если строк только одна). |
| NumDimensions |
Это значение равно Tensor::NumDimensions, т.е. 0 для скаляров, 1 для векторов и 2 для матриц. |
| Flags |
Содержит флаги выражения Flags, которые могут быть унаследованы или не унаследованы новыми выражениями, построенными на основе данного. См. список флагов. |
| IsRowMajor |
True, если порядок хранения этого выражения — по строкам. |
DenseBase()
| inlineprotected |
Конструктор по умолчанию. Ничего не делает.
all()
| inline |
- Возвращает
- true, если все коэффициенты равны true
Пример:
Vector3f boxMin(Vector3f::Zero()), boxMax(Vector3f::Ones()); Vector3f p0 = Vector3f::Random(), p1 = Vector3f::Random().cwiseAbs(); // let's check if p0 and p1 are inside the axis aligned box defined by the corners boxMin,boxMax: cout << "Is (" << p0.transpose() << ") inside the box: " << ((boxMin.array()<p0.array()).all() && (boxMax.array()>p0.array()).all()) << endl; cout << "Is (" << p1.transpose() << ") inside the box: " << ((boxMin.array()<p1.array()).all() && (boxMax.array()>p1.array()).all()) << endl;
Вывод:
Is ( 0.68 -0.211 0.566) inside the box: 0 Is (0.597 0.823 0.605) inside the box: 1
- См. также
- any(), Cwise::operator<()
allFinite()
| inline |
- Возвращает
- true, если
*thisсодержит только конечные числа, т.е. нет NaN и +/-INF значений.
- См. также
- hasNaN()
any()
| inline |
- Возвращает
- true, если хотя бы один коэффициент равен true
- См. также
- all()
begin() [1/2]
| inline |
begin() [2/2]
| inline |
const версия begin()
cbegin()
| inline |
cend()
| inline |
возвращает константный итератор, ссылающийся на элемент, следующий за последним элементом 1D вектора или массива. Это относится только к векторам (строковым или столбцовым), то есть матрицам, размер которых известен на этапе компиляции и имеет либо одну строку, либо один столбец.
colwise() [1/2]
| inline |
- Возвращает
- обёртку типа VectorwiseOp над *this, предоставляющую дополнительные операции частичного сокращения
- См. также
- rowwise(), класс VectorwiseOp, Сокращения, посетители и векторизация
colwise() [2/2]
| inline |
- Возвращает
- обёртку типа VectorwiseOp над *this, выполняющую операции векторизации и частичного сокращения
Пример:
Matrix3d m = Matrix3d::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the sum of each column:" << endl << m.colwise().sum() << endl; cout << "Here is the maximum absolute value of each column:" << endl << m.cwiseAbs().colwise().maxCoeff() << endl;
Вывод:
Here is the matrix m: 0.68 0.597 -0.33 -0.211 0.823 0.536 0.566 -0.605 -0.444 Here is the sum of each column: 1.04 0.815 -0.238 Here is the maximum absolute value of each column: 0.68 0.823 0.536
- См. также
- rowwise(), класс VectorwiseOp, Сокращения, посетители и векторизация
Constant() [1/3]
| inlinestatic |
- Возвращает
- выражение константной матрицы со значением value
Этот вариант применим только для типов DenseBase с фиксированным размером. Для типов с динамическим размером необходимо использовать варианты, принимающие аргументы размера.
Шаблонный параметр CustomNullaryOp — тип функции.
- См. также
- класс CwiseNullaryOp
Constant() [2/3]
| inlinestatic |
- Возвращает
- выражение константной матрицы со значением value
Параметры rows и cols — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом DenseBase.
Этот вариант предназначен для типов матриц с динамическим размером. Для типов с фиксированным размером передача rows и cols избыточна, поэтому следует использовать Zero().
Шаблонный параметр CustomNullaryOp — тип функции.
- См. также
- класс CwiseNullaryOp
Constant() [3/3]
| inlinestatic |
- Возвращает
- выражение константной матрицы со значением value
Параметр size — размер возвращаемого вектора. Должен быть совместим с типом DenseBase.
Этот вариант применим только к векторам (строковым или столбцовым), то есть матрицам, размер которых известен на этапе компиляции и имеет либо одну строку, либо один столбец.
Этот вариант предназначен для типов векторов с динамическим размером. Для типов с фиксированным размером передача size избыточна, поэтому следует использовать Zero().
Шаблонный параметр CustomNullaryOp — тип функции.
- См. также
- класс CwiseNullaryOp
count()
| inline |
end() [1/2]
| inline |
end() [2/2]
| inline |
Константная версия end()
eval()
| inline |
- Возвращает
- матрицу или вектор, полученные в результате вычисления данного выражения.
Обратите внимание, что в случае обычной матрицы или вектора (а не выражения) эта функция просто возвращает константную ссылку, чтобы избежать бесполезной копии.
fill()
| inline |
Псевдоним для setConstant(): устанавливает все коэффициенты в этом выражении на val.
- См. также
- setConstant(), Constant(), класс CwiseNullaryOp
flagged()
| inline |
- Устаревшее:
- теперь возвращает
*this
format()
| inline |
- Возвращает
- объект-прокси WithFormat, позволяющий вывести матрицу с заданным форматом fmt.
См. класс IOFormat для примеров.
- См. также
- класс IOFormat, класс WithFormat
hasNaN()
| inline |
- Возвращает
- true, если
*thisсодержит хотя бы одно число Not a Number (NaN).
- См. также
- allFinite()
innerSize()
| inline |
- Возвращает
- внутренний размер.
- Примечание
- Для вектора это просто размер. Для матрицы (не вектора) это меньшая размерность относительно порядка хранения, т. е. количество строк для матрицы в столбцовом порядке и количество столбцов для матрицы в строчном порядке.
isApprox()
| bool Eigen::DenseBase< Derived >::isApprox | ( | const DenseBase< OtherDerived > & | other, |
| const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision() | ||
| ) | const |
- Возвращает
-
trueесли*thisприблизительно равно other с точностью, определенной prec.
- Примечание
- Нечеткие сравнения выполняются мультипликативно. Два вектора \( v \) и \( w \) считаются приблизительно равными с точностью \( p \), если
\[ \Vert v - w \Vert \leqslant p\,\min(\Vert v\Vert, \Vert w\Vert). \]
Для матриц сравнение выполняется с использованием нормы Гильберта-Шмидта (также известной как норма Фробениуса L2). - Из-за мультипликативности этого сравнения нельзя использовать эту функцию для проверки того,
*thisприблизительно равно нулевой матрице или вектору. Действительно,isApprox(zero)возвращает false, если*thisне является точно нулевой матрицей или вектором. Если необходимо проверить,*thisравно нулю, используйте internal::isMuchSmallerThan(const RealScalar&, RealScalar) вместо этого.
- См. также
- internal::isMuchSmallerThan(const RealScalar&, RealScalar) const
isApproxToConstant()
| bool Eigen::DenseBase< Derived >::isApproxToConstant | ( | const Scalar & | val, |
| const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision() | ||
| ) | const |
- Возвращает
- true, если все коэффициенты этой матрицы приблизительно равны val с точностью prec
isConstant()
| bool Eigen::DenseBase< Derived >::isConstant | ( | const Scalar & | val, |
| const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision() | ||
| ) | const |
Это просто псевдоним для isApproxToConstant().
- Возвращает
- true, если все коэффициенты этой матрицы приблизительно равны value с точностью prec
isMuchSmallerThan() [1/2]
| bool Eigen::DenseBase< Derived >::isMuchSmallerThan | ( | const DenseBase< OtherDerived > & | other, |
| const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision() | ||
| ) | const |
- Возвращает
-
trueесли норма*thisнамного меньше нормы other с точностью, определенной prec.
- Примечание
- Нечеткие сравнения выполняются мультипликативно. Вектор \( v \) считается намного меньше вектора \( w \) с точностью \( p \), если
\[ \Vert v \Vert \leqslant p\,\Vert w\Vert. \]
Для матриц сравнение выполняется с использованием нормы Гильберта-Шмидта.
- См. также
- isApprox(), isMuchSmallerThan(const RealScalar&, RealScalar) const
isMuchSmallerThan() [2/2]
| bool Eigen::DenseBase< Derived >::isMuchSmallerThan | ( | const typename NumTraits< Scalar >::Real & | other, |
| const RealScalar & | prec | ||
| ) | const |
- Возвращает
-
trueесли норма*thisнамного меньше other с точностью, определенной prec.
- Примечание
- Нечеткие сравнения выполняются мультипликативно. Вектор \( v \) считается намного меньше \( x \) с точностью \( p \), если
\[ \Vert v \Vert \leqslant p\,\vert x\vert. \]
Для матриц сравнение выполняется с использованием нормы Гильберта-Шмидта. По этой причине значение эталонного скаляра other должно поступать из нормы Гильберта-Шмидта эталонной матрицы с такими же размерами.
- См. также
- isApprox(), isMuchSmallerThan(const DenseBase<OtherDerived>&, RealScalar) const
isOnes()
| bool Eigen::DenseBase< Derived >::isOnes | ( | const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision()
|
) | const |
- Возвращает
- true, если *this приблизительно равно матрице, где все коэффициенты равны 1, с точностью, заданной prec.
Пример:
Matrix3d m = Matrix3d::Ones(); m(0,2) += 1e-4; cout << "Here's the matrix m:" << endl << m << endl; cout << "m.isOnes() returns: " << m.isOnes() << endl; cout << "m.isOnes(1e-3) returns: " << m.isOnes(1e-3) << endl;
Вывод:
Here's the matrix m: 1 1 1 1 1 1 1 1 1 m.isOnes() returns: 0 m.isOnes(1e-3) returns: 1
- См. также
- класс CwiseNullaryOp, Ones()
isZero()
| bool Eigen::DenseBase< Derived >::isZero | ( | const RealScalar & |
prec = NumTraits<Scalar>::dummy_precision()
|
) | const |
- Возвращает
- true, если *this приблизительно равен нулевой матрице, с точностью, заданной prec.
Пример:
Matrix3d m = Matrix3d::Zero(); m(0,2) = 1e-4; cout << "Here's the matrix m:" << endl << m << endl; cout << "m.isZero() returns: " << m.isZero() << endl; cout << "m.isZero(1e-3) returns: " << m.isZero(1e-3) << endl;
Вывод:
Here's the matrix m:
0 0 0.0001
0 0 0
0 0 0
m.isZero() returns: 0
m.isZero(1e-3) returns: 1
- См. также
- класс CwiseNullaryOp, Zero()
lazyAssign()
| EIGEN_DEPRECATED Derived& Eigen::DenseBase< Derived >::lazyAssign | ( | const DenseBase< OtherDerived > & | other | ) |
LinSpaced() [1/4]
| inlinestatic |
Задает линейно распределённый вектор.
Функция генерирует 'size' равномерно распределённых значений в замкнутом интервале [low,high]. Когда size равен 1, возвращается вектор длины 1, содержащий 'high'.
Это только для векторов (строка-векторов или столбец-векторов), т.е. матриц, чья размерность известна на этапе компиляции и равна либо одной строке, либо одному столбцу.
Пример:
cout << VectorXi::LinSpaced(4,7,10).transpose() << endl; cout << VectorXd::LinSpaced(5,0.0,1.0).transpose() << endl;
Вывод:
7 8 9 10 0 0.25 0.5 0.75 1
Для целочисленных типов скаляров равномерное распределение возможно только если длина диапазона, т.е., high-low является кратной size-1, или если size кратна числу значений high-low+1 (что означает, что каждое значение может повторяться одинаковое количество раз). Если одно из этих условий не выполняется, то high уменьшается до наибольшего значения, удовлетворяющего одному из этих условий. Вот несколько примеров:
Пример:
cout << "Even spacing inputs:" << endl; cout << VectorXi::LinSpaced(8,1,4).transpose() << endl; cout << VectorXi::LinSpaced(8,1,8).transpose() << endl; cout << VectorXi::LinSpaced(8,1,15).transpose() << endl; cout << "Uneven spacing inputs:" << endl; cout << VectorXi::LinSpaced(8,1,7).transpose() << endl; cout << VectorXi::LinSpaced(8,1,9).transpose() << endl; cout << VectorXi::LinSpaced(8,1,16).transpose() << endl;
Вывод:
Even spacing inputs: 1 1 2 2 3 3 4 4 1 2 3 4 5 6 7 8 1 3 5 7 9 11 13 15 Uneven spacing inputs: 1 1 2 2 3 3 4 4 1 2 3 4 5 6 7 8 1 3 5 7 9 11 13 15
- См. также
- setLinSpaced(Index,const Scalar&,const Scalar&), CwiseNullaryOp Специальная версия для фиксированных типов size, которая не требует параметра size.
LinSpaced() [2/4]
| inlinestatic |
Задает линейно распределённый вектор.
Функция генерирует 'size' равномерно распределённых значений в замкнутом интервале [low,high]. Когда size равен 1, возвращается вектор длины 1, содержащий 'high'.
Это только для векторов (строка-векторов или столбец-векторов), т.е. матриц, чья размерность известна на этапе компиляции и равна либо одной строке, либо одному столбцу.
Пример:
cout << VectorXi::LinSpaced(4,7,10).transpose() << endl; cout << VectorXd::LinSpaced(5,0.0,1.0).transpose() << endl;
Вывод:
7 8 9 10 0 0.25 0.5 0.75 1
Для целочисленных типов скаляров равномерное распределение возможно только если длина диапазона, т.е., high-low является кратной size-1, или если size кратна числу значений high-low+1 (что означает, что каждое значение может повторяться одинаковое количество раз). Если одно из этих условий не выполняется, то high уменьшается до наибольшего значения, удовлетворяющего одному из этих условий. Вот несколько примеров:
Пример:
cout << "Even spacing inputs:" << endl; cout << VectorXi::LinSpaced(8,1,4).transpose() << endl; cout << VectorXi::LinSpaced(8,1,8).transpose() << endl; cout << VectorXi::LinSpaced(8,1,15).transpose() << endl; cout << "Uneven spacing inputs:" << endl; cout << VectorXi::LinSpaced(8,1,7).transpose() << endl; cout << VectorXi::LinSpaced(8,1,9).transpose() << endl; cout << VectorXi::LinSpaced(8,1,16).transpose() << endl;
Вывод:
Even spacing inputs: 1 1 2 2 3 3 4 4 1 2 3 4 5 6 7 8 1 3 5 7 9 11 13 15 Uneven spacing inputs: 1 1 2 2 3 3 4 4 1 2 3 4 5 6 7 8 1 3 5 7 9 11 13 15
LinSpaced() [3/4]
| inlinestatic |
- Устарело:
- из-за потери точности. В Eigen 3.3, это псевдоним для LinSpaced(const Scalar&,const Scalar&)
- См. также
- LinSpaced(const Scalar&, const Scalar&)
LinSpaced() [4/4]
| inlinestatic |
- Устарело:
- из-за потери точности. В Eigen 3.3, это псевдоним для LinSpaced(Index,const Scalar&, const Scalar&)
Это только для векторов (строка-векторов или столбец-векторов), т.е. матриц, чья размерность известна на этапе компиляции и равна либо одной строке, либо одному столбцу.
Пример:
cout << VectorXi::LinSpaced(Sequential,4,7,10).transpose() << endl; cout << VectorXd::LinSpaced(Sequential,5,0.0,1.0).transpose() << endl;
Вывод:
7 8 9 10 0 0.25 0.5 0.75 1
maxCoeff() [1/3]
| inline |
- Возвращает
- максимальное значение всех коэффициентов
*this. В случае, если*thisсодержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределённое NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат - максимальное из элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
maxCoeff() [2/3]
| internal::traits< Derived >::Scalar Eigen::DenseBase< Derived >::maxCoeff | ( | IndexType * | index | ) | const |
- Возвращает
- максимальное значение всех коэффициентов *this и помещает его индекс в *index.
В случае, если *this содержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределенное NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат — максимальное значение элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
- См. также
- DenseBase::maxCoeff(IndexType*,IndexType*), DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::visitor(), DenseBase::maxCoeff()
maxCoeff() [3/3]
| internal::traits< Derived >::Scalar Eigen::DenseBase< Derived >::maxCoeff | ( | IndexType * | rowId, |
| IndexType * | colId | ||
| ) | const |
- Возвращает
- максимальное значение всех коэффициентов *this и помещает его индекс по строке и столбцу в *row и *col.
В случае, если *this содержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределенное NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат — максимальное значение элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
- См. также
- DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::visit(), DenseBase::maxCoeff()
mean()
| inline |
minCoeff() [1/3]
| inline |
- Возвращает
- минимальное значение всех коэффициентов
*this. В случае, если*thisсодержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределенное NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат — минимальное значение элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
minCoeff() [2/3]
| internal::traits< Derived >::Scalar Eigen::DenseBase< Derived >::minCoeff | ( | IndexType * | index | ) | const |
- Возвращает
- минимальное значение всех коэффициентов *this и помещает его индекс в *index.
В случае, если *this содержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределенное NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат — максимальное значение элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
- См. также
- DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::maxCoeff(IndexType*,IndexType*), DenseBase::visit(), DenseBase::minCoeff()
minCoeff() [3/3]
| internal::traits< Derived >::Scalar Eigen::DenseBase< Derived >::minCoeff | ( | IndexType * | rowId, |
| IndexType * | colId | ||
| ) | const |
- Возвращает
- минимальное значение всех коэффициентов *this и помещает его индекс по строке и столбцу в *row и *col.
В случае, если *this содержит NaN, NaNPropagation определяет поведение: NaNPropagation == PropagateFast : неопределенное NaNPropagation == PropagateNaN : результат равен NaN NaNPropagation == PropagateNumbers : результат — максимальное значение элементов, которые не равны NaN
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
- См. также
- DenseBase::minCoeff(Index*), DenseBase::maxCoeff(Index*,Index*), DenseBase::visit(), DenseBase::minCoeff()
nestByValue()
| inline |
- Возвращает
- выражение временной версии *this.
nonZeros()
| inline |
- Возвращает
- количество ненулевых коэффициентов, что фактически соответствует количеству сохранённых коэффициентов.
NullaryExpr() [1/3]
| inlinestatic |
- Возвращает
- выражение матрицы, определённой пользовательским функтором func
Этот вариант подходит только для матриц с фиксированным размером DenseBase. Для матриц с динамическим размером используйте варианты с аргументами размера.
Шаблонный параметр CustomNullaryOp — тип функтора.
- См. также
- класс CwiseNullaryOp
NullaryExpr() [2/3]
| inlinestatic |
- Возвращает
- выражение матрицы, определённой пользовательским функтором func
Параметры rows и cols — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом MatrixBase.
Этот вариант предназначен для типов матриц с динамическим размером. Для типов с фиксированным размером передача rows и cols избыточна, поэтому следует использовать Zero().
Шаблонный параметр CustomNullaryOp — тип функтора.
- См. также
- класс CwiseNullaryOp
NullaryExpr() [3/3]
| inlinestatic |
- Возвращает
- выражение матрицы, определённой пользовательским функтором функция
Параметр размер — размер возвращаемого вектора. Должен быть совместим с типом MatrixBase.
Это только для векторов (строковых или столбцовых), то есть матриц, которые в момент компиляции известны как имеющие одну строку или один столбец.
Этот вариант предназначен для использования с типами векторов динамического размера. Для типов фиксированного размера передача размера в качестве аргумента избыточна, поэтому следует использовать Zero() вместо этого.
Параметр шаблона CustomNullaryOp — тип функтора.
Вот пример с генераторами случайных чисел C++11:
#include <Eigen/Core> #include <iostream> #include <random> using namespace Eigen; int main() { std::default_random_engine generator; std::poisson_distribution<int> distribution(4.1); auto poisson = [&] () {return distribution(generator);}; RowVectorXi v = RowVectorXi::NullaryExpr(10, poisson ); std::cout << v << "\n"; }
Вывод:
2 3 1 4 3 4 4 3 2 3
- См. также
- класс CwiseNullaryOp
Ones() [1/3]
| inlinestatic |
- Возвращает
- выражение матрицы или вектора фиксированного размера, где все коэффициенты равны единице.
Этот вариант предназначен только для типов MatrixBase фиксированного размера. Для типов динамического размера необходимо использовать варианты, принимающие аргументы размера.
Пример:
cout << Matrix2d::Ones() << endl; cout << 6 * RowVector4i::Ones() << endl;
Вывод:
1 1 1 1 6 6 6 6
- См. также
- Ones(Index), Ones(Index,Index), isOnes(), класс Ones
Ones() [2/3]
| inlinestatic |
- Возвращает
- выражение матрицы, где все коэффициенты равны единице.
Параметры строки и столбцы — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом MatrixBase.
Этот вариант предназначен для использования с типами матриц динамического размера. Для типов фиксированного размера передача строки и столбцы в качестве аргументов избыточна, поэтому следует использовать Ones() вместо этого.
Пример:
cout << MatrixXi::Ones(2,3) << endl;
Вывод:
1 1 1 1 1 1
- См. также
- Ones(), Ones(Index), isOnes(), класс Ones
Ones() [3/3]
| inlinestatic |
- Возвращает
- выражение вектора, где все коэффициенты равны единице.
Параметр новыйРазмер — размер возвращаемого вектора. Должен быть совместим с типом MatrixBase.
Это только для векторов (строковых или столбцовых), то есть матриц, которые в момент компиляции известны как имеющие одну строку или один столбец.
Этот вариант предназначен для использования с типами векторов динамического размера. Для типов фиксированного размера передача размера в качестве аргумента избыточна, поэтому следует использовать Ones() вместо этого.
Пример:
cout << 6 * RowVectorXi::Ones(4) << endl; cout << VectorXf::Ones(2) << endl;
Вывод:
6 6 6 6 1 1
- См. также
- Ones(), Ones(Index,Index), isOnes(), класс Ones
operator<<() [1/2]
| inline |
- См. также
- operator<<(const Scalar&)
operator<<() [2/2]
| inline |
Удобный оператор для задания коэффициентов матрицы.
Коэффициенты должны быть предоставлены в порядке следования строк и точно соответствовать размеру матрицы. В противном случае будет поднято утверждение.
Пример:
Matrix3i m1;
m1 << 1, 2, 3,
4, 5, 6,
7, 8, 9;
cout << m1 << endl << endl;
Matrix3i m2 = Matrix3i::Identity();
m2.block(0,0, 2,2) << 10, 11, 12, 13;
cout << m2 << endl << endl;
Vector2i v1;
v1 << 14, 15;
m2 << v1.transpose(), 16,
v1, m1.block(1,1,2,2);
cout << m2 << endl;
Вывод:
1 2 3 4 5 6 7 8 9 10 11 0 12 13 0 0 0 1 14 15 16 14 5 6 15 8 9
- Примечание
- Согласно стандарту C++, выражения аргументов этого инициализатора запятыми оцениваются в произвольном порядке.
- См. также
- CommaInitializer::finished(), класс CommaInitializer
operator=() [1/3]
| inline |
Специальный случай оператора=, чтобы предотвратить создание компилятором оператора по умолчанию (проблема возникла с g++ 4.1)
operator=() [2/3]
| inline |
Копирует другой в *this.
- Возвращает
- ссылку на *this.
operator=() [3/3]
| Производный & Eigen::DenseBase< Производный >::operator= | ( | const EigenBase< OtherDerived > & | другой | ) |
Копирует общее выражение другой в *this.
Выражение должно предоставить функцию (с параметром шаблона) evalTo(Производный & dst) const, которая выполняет фактическую работу. На практике это позволяет любому пользователю написать собственную специальную матрицу, не изменяя MatrixBase
- Возвращает
- ссылку на *this.
outerSize()
| inline |
- Возвращает
- внешний размер.
- Примечание
- Для вектора это возвращает просто 1. Для матрицы (не вектора) это главная размерность относительно порядка хранения, т. е. число столбцов для матрицы в столбцовом порядке и число строк для матрицы в строчном порядке.
prod()
| inline |
- Возвращает
- произведение всех коэффициентов *this
Пример:
Matrix3d m = Matrix3d::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the product of all the coefficients:" << endl << m.prod() << endl;
Вывод:
Here is the matrix m: 0.68 0.597 -0.33 -0.211 0.823 0.536 0.566 -0.605 -0.444 Here is the product of all the coefficients: 0.0019
Random() [1/3]
| inlinestatic |
- Возвращает
- матричное или векторное выражение с случайными числами фиксированного размера
Числа равномерно распределены по всему диапазону определения для целочисленных типов и в диапазоне [-1:1] для типов чисел с плавающей точкой.
Этот вариант предназначен только для типов MatrixBase фиксированного размера. Для типов динамического размера необходимо использовать варианты, принимающие аргументы размера.
Пример:
cout << 100 * Matrix2i::Random() << endl;
Вывод:
700 600 -200 600
Это выражение имеет флаг "оценить перед вложением", чтобы оно всегда оценивалось в временной матрице при вложении в более сложное выражение. Это предотвращает неожиданное поведение с выражениями, содержащими случайные матрицы.
- Предупреждение
- Эта функция не является потокобезопасной.
Random() [2/3]
| inlinestatic |
- Возвращает
- выражение случайной матрицы
Числа равномерно распределены по всему диапазону определения для целочисленных типов и в диапазоне [-1:1] для типов чисел с плавающей точкой.
Параметры rows и cols — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом MatrixBase.
- Предупреждение
- Эта функция не является потокобезопасной.
Этот вариант предназначен для использования с типами матриц динамического размера. Для типов фиксированного размера передача rows и cols в качестве аргументов избыточна, поэтому следует использовать Random().
Пример:
cout << MatrixXi::Random(2,3) << endl;
Вывод:
7 6 9 -2 6 -6
Это выражение имеет флаг "оценить перед вложением", чтобы оно всегда оценивалось в временной матрице при вложении в более сложное выражение. Это предотвращает неожиданное поведение с выражениями, содержащими случайные матрицы.
См. DenseBase::NullaryExpr(Index, const CustomNullaryOp&) для примера использования генераторов случайных чисел C++11.
Random() [3/3]
| inlinestatic |
- Возвращает
- выражение случайного вектора
Числа равномерно распределены по всему диапазону определения для целочисленных типов и в диапазоне [-1:1] для типов чисел с плавающей точкой.
Параметр size — размер возвращаемого вектора. Должен быть совместим с типом MatrixBase.
Только для векторов (строчных или столбцовых), т. е. матриц, чьи строки или столбцы известны на этапе компиляции.
- Предупреждение
- Эта функция не является потокобезопасной.
Этот вариант предназначен для использования с типами векторов динамического размера. Для типов фиксированного размера передача size в качестве аргумента избыточна, поэтому следует использовать Random().
Пример:
cout << VectorXi::Random(2) << endl;
Вывод:
7 -2
Это выражение имеет флаг "оценить перед вложением", чтобы оно всегда оценивалось в временном векторе при вложении в более сложное выражение. Это предотвращает неожиданное поведение с выражениями, содержащими случайные матрицы.
redux()
| inline |
- Возвращает
- результат полной операции redux по всей матрице или вектору с использованием func
Шаблонный параметр BinaryOp — тип функции func, которая должна быть ассоциативным оператором. Обрабатываются оба стиля функций C++98 и C++11.
- Предупреждение
- матрица должна быть непустой, в противном случае срабатывает утверждение.
replicate() [1/2]
| const Replicate< Derived, RowFactor, ColFactor > Eigen::DenseBase< Derived >::replicate |
- Возвращает
- выражение, представляющее копирование
*this
Пример:
MatrixXi m = MatrixXi::Random(2,3); cout << "Here is the matrix m:" << endl << m << endl; cout << "m.replicate<3,2>() = ..." << endl; cout << m.replicate<3,2>() << endl;
Вывод:
Here is the matrix m: 7 6 9 -2 6 -6 m.replicate<3,2>() = ... 7 6 9 7 6 9 -2 6 -6 -2 6 -6 7 6 9 7 6 9 -2 6 -6 -2 6 -6 7 6 9 7 6 9 -2 6 -6 -2 6 -6
- См. также
- VectorwiseOp::replicate(), DenseBase::replicate(Index,Index), класс Replicate
replicate() [2/2]
| inline |
- Возвращает
- выражение, представляющее копирование
*this
Пример:
Vector3i v = Vector3i::Random(); cout << "Here is the vector v:" << endl << v << endl; cout << "v.replicate(2,5) = ..." << endl; cout << v.replicate(2,5) << endl;
Вывод:
Here is the vector v: 7 -2 6 v.replicate(2,5) = ... 7 7 7 7 7 -2 -2 -2 -2 -2 6 6 6 6 6 7 7 7 7 7 -2 -2 -2 -2 -2 6 6 6 6 6
- См. также
- VectorwiseOp::replicate(), DenseBase::replicate<int,int>(), класс Replicate
resize() [1/2]
| inline |
Только простые матрицы/массивы, а не выражения, могут быть изменены размером; поэтому единственными полезными методами изменения размера являются Matrix::resize() и Array::resize(). Настоящий метод только утверждает, что новый размер равен старому размеру, и ничего больше не делает.
resize() [2/2]
| inline |
Только простые матрицы/массивы, а не выражения, могут быть изменены размером; поэтому единственными полезными методами изменения размера являются Matrix::resize() и Array::resize(). Настоящий метод только утверждает, что новый размер равен старому размеру, и ничего больше не делает.
reverse() [1/2]
| inline |
- Возвращает
- выражение обратного порядка *this.
Пример:
MatrixXi m = MatrixXi::Random(3,4); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the reverse of m:" << endl << m.reverse() << endl; cout << "Here is the coefficient (1,0) in the reverse of m:" << endl << m.reverse()(1,0) << endl; cout << "Let us overwrite this coefficient with the value 4." << endl; m.reverse()(1,0) = 4; cout << "Now the matrix m is:" << endl << m << endl;
Вывод:
Here is the matrix m: 7 6 -3 1 -2 9 6 0 6 -6 -5 3 Here is the reverse of m: 3 -5 -6 6 0 6 9 -2 1 -3 6 7 Here is the coefficient (1,0) in the reverse of m: 0 Let us overwrite this coefficient with the value 4. Now the matrix m is: 7 6 -3 1 -2 9 6 4 6 -6 -5 3
reverse() [2/2]
| inline |
Это константная версия reverse().
reverseInPlace()
| inline |
Это версия reverse «на месте»: она изменяет порядок элементов *this.
В большинстве случаев лучше просто использовать обратное выражение матрицы. Однако, когда необходимо изменить данные самой матрицы, то эта версия «на месте» — лучший выбор, поскольку она предоставляет следующие дополнительные преимущества:
- меньше ошибок: выполнение той же операции с помощью .reverse() требует особого внимания:
m = m.reverse().eval();
- этот API позволяет выполнять операции обратного порядка без временного объекта
- это позволяет в будущем оптимизировать код (согласованность с кэшем и т. д.)
- См. также
- VectorwiseOp::reverseInPlace(), reverse()
rowwise() [1/2]
| inline |
- Возвращает
- обёртку VectorwiseOp для записи, для *this, которая предоставляет дополнительные операции частичного сокращения.
- См. также
- colwise(), класс VectorwiseOp, Сокращения, посетители и векторизация
rowwise() [2/2]
| inline |
- Возвращает
- обёртку VectorwiseOp для *this для векторизации и частичных сокращений.
Пример:
Matrix3d m = Matrix3d::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the sum of each row:" << endl << m.rowwise().sum() << endl; cout << "Here is the maximum absolute value of each row:" << endl << m.cwiseAbs().rowwise().maxCoeff() << endl;
Вывод:
Here is the matrix m: 0.68 0.597 -0.33 -0.211 0.823 0.536 0.566 -0.605 -0.444 Here is the sum of each row: 0.948 1.15 -0.483 Here is the maximum absolute value of each row: 0.68 0.823 0.605
- См. также
- colwise(), класс VectorwiseOp, Сокращения, посетители и векторизация
select() [1/3]
| inline |
select() [2/3]
| inline |
Версия DenseBase::select(const DenseBase&, const DenseBase&) со скалярным значением в качестве выражения else.
select() [3/3]
| inline |
Версия DenseBase::select(const DenseBase&, const DenseBase&) с then выражением, являющимся скалярным значением.
setConstant()
| inline |
Устанавливает все коэффициенты в этом выражении в значение val.
- См. также
- fill(), setConstant(Index,const Scalar&), setConstant(Index,Index,const Scalar&), setZero(), setOnes(), Constant(), класс CwiseNullaryOp, setZero(), setOnes()
setLinSpaced() [1/2]
| inline |
Устанавливает линейно-распределённый вектор.
Функция заполняет *this равномерно распределёнными значениями в замкнутом интервале [low,high]. При размере 1 возвращается вектор длиной 1, содержащий 'high'.
Это только для векторов (строковых или столбцовых), т.е. матриц, которые в момент компиляции известны как имеющие либо одну строку, либо один столбец.
Для целочисленных скалярных типов обратите внимание на пояснения по определению равномерного распределения.
setLinSpaced() [2/2]
| inline |
Устанавливает линейно-распределённый вектор.
Функция генерирует 'size' равномерно распределённых значений в замкнутом интервале [low,high]. При size=1 возвращается вектор длины 1, содержащий 'high'.
Это только для векторов (строковых или столбцовых), т.е. матриц, которые в момент компиляции известны как имеющие либо одну строку, либо один столбец.
Пример:
VectorXf v; v.setLinSpaced(5,0.5f,1.5f); cout << v << endl;
Вывод:
0.5 0.75 1 1.25 1.5
Для целочисленных скалярных типов обратите внимание на пояснения по определению равномерного распределения.
setOnes()
| inline |
Устанавливает все коэффициенты в этом выражении в единицу.
Пример:
Matrix4i m = Matrix4i::Random(); m.row(1).setOnes(); cout << m << endl;
Вывод:
7 9 -5 -3 1 1 1 1 6 -3 0 9 6 6 3 9
- См. также
- класс CwiseNullaryOp, Ones()
setRandom()
| inline |
Устанавливает все коэффициенты в этом выражении в случайные значения.
Числа равномерно распределены в пределах их диапазона определения для целочисленных типов и в диапазоне [-1:1] для чисел с плавающей точкой.
- Предупреждение
- Эта функция не является потокобезопасной.
Пример:
Matrix4i m = Matrix4i::Zero(); m.col(1).setRandom(); cout << m << endl;
Вывод:
0 7 0 0 0 -2 0 0 0 6 0 0 0 6 0 0
- См. также
- класс CwiseNullaryOp, setRandom(Index), setRandom(Index,Index)
setZero()
| inline |
Устанавливает все коэффициенты в этом выражении в ноль.
Пример:
Matrix4i m = Matrix4i::Random(); m.row(1).setZero(); cout << m << endl;
Вывод:
7 9 -5 -3 0 0 0 0 6 -3 0 9 6 6 3 9
- См. также
- класс CwiseNullaryOp, Zero()
sum()
| inline |
swap() [1/2]
| inline |
меняет местами *this и выражение other.
swap() [2/2]
| inline |
меняет местами *this и матрицу или массив other.
transpose() [1/2]
| inline |
- Возвращает
- выражение транспонированной матрицы *this.
Пример:
Matrix2i m = Matrix2i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is the transpose of m:" << endl << m.transpose() << endl; cout << "Here is the coefficient (1,0) in the transpose of m:" << endl << m.transpose()(1,0) << endl; cout << "Let us overwrite this coefficient with the value 0." << endl; m.transpose()(1,0) = 0; cout << "Now the matrix m is:" << endl << m << endl;
Вывод:
Here is the matrix m: 7 6 -2 6 Here is the transpose of m: 7 -2 6 6 Here is the coefficient (1,0) in the transpose of m: 6 Let us overwrite this coefficient with the value 0. Now the matrix m is: 7 0 -2 6
- Предупреждение
- Если вы хотите заменить матрицу её транспонированной, НЕ делайте так:
m = m.transpose(); // bug!!! caused by aliasing effectВместо этого используйте метод transposeInPlace():m.transposeInPlace();
который даёт Eigen хорошие возможности для оптимизации, или альтернативно, вы можете сделать так:m = m.transpose().eval();
- См. также
- transposeInPlace(), adjoint()
transpose() [2/2]
| inline |
Это константная версия transpose().
Убедитесь, что вы прочитали предупреждение для transpose()!
- См. также
- transposeInPlace(), adjoint()
transposeInPlace()
| inline |
Это "встроенная" версия transpose(): она заменяет *this её собственной транспонированной матрицей. Таким образом, выполнение
m.transposeInPlace();
имеет тот же эффект на m, что и выполнение
m = m.transpose().eval();
и является более быстрым и безопасным, потому что в последней строке кода, забыв о eval(), приводит к ошибке, вызванной алиасингом.
Однако обратите внимание, что этот метод полезен только если вы хотите заменить матрицу её собственной транспонированной. Если вам нужна только транспонированная матрица, используйте transpose().
- Примечание
- если матрица не квадратная, то
*thisдолжна быть изменяемой матрицей. Это исключает (неквадратные) матрицы фиксированного размера, блочные выражения и отображения.
- См. также
- transpose(), adjoint(), adjointInPlace()
value()
| inline |
- Возвращает
- единственный коэффициент выражения 1x1
visit()
| void Eigen::DenseBase< Derived >::visit | ( | Visitor & | visitor | ) | const |
Применяет visitor visitor ко всем коэффициентам матрицы или вектора.
Шаблонный параметр Visitor — тип visitor и предоставляет следующий интерфейс:
struct MyVisitor { // called for the first coefficient void init(const Scalar& value, Index i, Index j); // called for all other coefficients void operator() (const Scalar& value, Index i, Index j); };
- Примечание
- по сравнению с одним или двумя циклами for, visitors предлагают автоматическую развертку для небольших матриц фиксированного размера.
- если матрица пустая, visitor остается неизменным.
- См. также
- minCoeff(Index*,Index*), maxCoeff(Index*,Index*), DenseBase::redux()
Zero() [1/3]
| inlinestatic |
- Возвращает
- выражение нулевой матрицы или вектора фиксированного размера.
Этот вариант предназначен только для типов матриц MatrixBase фиксированного размера. Для типов динамического размера вам необходимо использовать варианты, принимающие аргументы размера.
Пример:
cout << Matrix2d::Zero() << endl; cout << RowVector4i::Zero() << endl;
Вывод:
0 0 0 0 0 0 0 0
- См. также
- Zero(Index), Zero(Index,Index)
Zero() [2/3]
| inlinestatic |
- Возвращает
- выражение нулевой матрицы.
Параметры rows и cols — количество строк и столбцов возвращаемой матрицы. Должны быть совместимы с типом MatrixBase.
Этот вариант предназначен для использования с типами матриц динамического размера. Для типов фиксированного размера передача rows и cols как аргументов избыточна, поэтому следует использовать Zero().
Пример:
cout << MatrixXi::Zero(2,3) << endl;
Вывод:
0 0 0 0 0 0
- См. также
- Zero(), Zero(Index)
Zero() [3/3]
| inlinestatic |
- Возвращает
- выражение нулевого вектора.
Параметр size — размер возвращаемого вектора. Должен быть совместим с типом MatrixBase.
Только для векторов (строчных или столбцовых), т.е. матриц, размер которых известен на этапе компиляции и имеет либо одну строку, либо один столбец.
Этот вариант предназначен для использования с типами векторов динамического размера. Для типов фиксированного размера передача size как аргумента избыточна, поэтому следует использовать Zero().
Пример:
cout << RowVectorXi::Zero(4) << endl; cout << VectorXf::Zero(2) << endl;
Вывод:
0 0 0 0 0 0
- См. также
- Zero(), Zero(Index,Index)
operator<<()
| related |
Выводит матрицу в заданный поток.
Если вы хотите вывести матрицу с форматом, отличным от стандартного, используйте DenseBase::format().
Также можно изменить стандартный формат, определив EIGEN_DEFAULT_IO_FORMAT до включения заголовков Eigen. Если не определено, оно будет автоматически определено как Eigen::IOFormat(), то есть Eigen::IOFormat с параметрами по умолчанию.
- См. также
- DenseBase::format()
The documentation for this class was generated from the following files:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1DenseBase.html