template<typename Derived>
class Eigen::ScaledPermutationBase< Derived >
Base class for scaled permutation matrices.
A scaled permutation is the product \(P D\) of a permutation matrix and a diagonal matrix: a square matrix with exactly one nonzero per row and per column. It is stored as the permutation's indices and one scale per column, so that coefficient (indices()(k), k) equals scales()(k).
The set is closed under products with permutations, diagonal matrices, scalars and other scaled permutations, and under inversion and transposition; all of these cost \(O(n)\) and return a plain ScaledPermutationMatrix. Products with a dense matrix scale and permute its rows or columns in \(O(nm)\), and assigning to a dense matrix scatters the scales, so writing P * D * x or P * D * P.inverse() never forms an \(n \times n\) intermediate. Sums with a dense matrix are lazy expressions.
- See also
- class ScaledPermutationMatrix, class PermutationBase, class DiagonalBase
|
| PlainObject | adjoint () const |
| |
| Scalar | coeff (Index row, Index col) const |
| |
| constexpr Index | cols () const |
| |
| Scalar | determinant () const |
| |
| constexpr const IndicesType & | indices () const |
| |
| PlainObject | inverse () const |
| |
| template<typename OtherDerived> |
| internal::scaled_permutation_product_result< Derived, OtherDerived, StorageIndex >::type | operator* (const DiagonalBase< OtherDerived > &other) const |
| |
| template<typename OtherDerived> |
| PlainObject | operator* (const InverseImpl< OtherDerived, PermutationStorage > &other) const |
| |
| template<typename OtherDerived> |
| const Product< Derived, OtherDerived, DefaultProduct > | operator* (const MatrixBase< OtherDerived > &other) const |
| |
| template<typename OtherDerived> |
| PlainObject | operator* (const PermutationBase< OtherDerived > &other) const |
| |
| PlainObject | operator* (const Scalar &alpha) const |
| |
| template<typename OtherDerived> |
| internal::scaled_permutation_product_result< Derived, OtherDerived, StorageIndex >::type | operator* (const ScaledPermutationBase< OtherDerived > &other) const |
| |
| template<typename OtherDerived> |
| const Product< Derived, OtherDerived, DefaultProduct > | operator* (const TriangularBase< OtherDerived > &other) const |
| |
| PlainObject | operator- () const |
| |
| const PermutationType & | permutation () const |
| |
| constexpr Index | rows () const |
| |
| const ScalesType & | scales () const |
| |
| DenseMatrixType | toDenseMatrix () const |
| |
| PlainObject | transpose () const |
| |
| constexpr Index | cols () const noexcept |
| |
| constexpr Derived & | derived () |
| |
| constexpr const Derived & | derived () const |
| |
| constexpr Index | rows () const noexcept |
| |
| constexpr Index | size () const noexcept |
| |