Spec-Zone.ru › Eigen3

Eigen::RandomSetter

шаблон<typename SparseMatrixType, шаблон< typename T > class MapTraits = StdMapTraits, int OuterPacketBits = 6>
класс Eigen::RandomSetter< SparseMatrixType, MapTraits, OuterPacketBits >

Класс RandomSetter — обёртка, позволяющая устанавливать/обновлять разреженную матрицу с произвольным доступом.

Шаблонные параметры
SparseMatrixType тип разреженной матрицы, которую мы обновляем
MapTraits класс свойств, представляющий реализацию отображения, используемого для временного хранения разреженной матрицы. Его значение по умолчанию зависит от системы.
OuterPacketBits определяет количество строк (или столбцов), управляемых одним объектом отображения, как показатель степени двойки.

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

SparseMatrix<double> m(rows,cols);
{
  RandomSetter<SparseMatrix<double> > w(m);
  // don't use m but w instead with read/write random access to the coefficients:
  for(;;)
    w(rand(),rand()) = rand;
}
// when w is deleted, the data are copied back to m
// and m is ready to use.

Поскольку объекты hash_map не полностью отсортированы, представление полной матрицы как одного объекта hash_map потребовало бы большого и дорогостоящего сортирования для обновления сжатой матрицы обратно. Для решения этой проблемы RandomSetter использует несколько hash_map, каждый из которых представляет 2^OuterPacketBits столбцов или строк в соответствии с порядком хранения. Для достижения оптимальной производительности это значение следует настраивать в соответствии со средним числом ненулевых элементов на строку/столбец.

Возможные значения для шаблона MapTraits:

  • StdMapTraits: соответствует std::map. (работает не очень хорошо)
  • GnuHashMapTraits: соответствует __gnu_cxx::hash_map (доступен только с GCC)
  • GoogleDenseHashMapTraits: соответствует google::dense_hash_map (лучшая эффективность, разумное потребление памяти)
  • GoogleSparseHashMapTraits: соответствует google::sparse_hash_map (лучшее потребление памяти, относительно хорошая производительность)

Реализация отображения по умолчанию зависит от доступности и предпочтительный порядок: GoogleSparseHashMapTraits, GnuHashMapTraits и, наконец, StdMapTraits.

По соображениям производительности и потребления памяти настоятельно рекомендуется использовать одну из реализаций hash_map Google. Чтобы включить их поддержку, необходимо определить EIGEN_GOOGLEHASH_SUPPORT. Это включит как <google/dense_hash_map>, так и <google/sparse_hash_map>.

См. также
https://github.com/sparsehash/sparsehash
Индекс nonZeros () const
Скаляр & operator() (Индекс строка, Индекс столбец)
RandomSetter (SparseMatrixType &target)
~RandomSetter ()

RandomSetter()

шаблон<typename SparseMatrixType , шаблон< typename T > class MapTraits = StdMapTraits, int OuterPacketBits = 6>
Eigen::RandomSetter< SparseMatrixType, MapTraits, OuterPacketBits >::RandomSetter ( SparseMatrixType & target )
inline

Конструирует объект random setter из разреженной матрицы target

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

~RandomSetter()

шаблон<typename SparseMatrixType , шаблон< typename T > class MapTraits = StdMapTraits, int OuterPacketBits = 6>
Eigen::RandomSetter< SparseMatrixType, MapTraits, OuterPacketBits >::~RandomSetter ( )
inline

Деструктор, обновляющий обратно разреженную матрицу target

nonZeros()

шаблон<typename SparseMatrixType , шаблон< typename T > class MapTraits = StdMapTraits, int OuterPacketBits = 6>
Индекс Eigen::RandomSetter< SparseMatrixType, MapTraits, OuterPacketBits >::nonZeros ( ) const
inline
Возвращает
количество ненулевых коэффициентов
Примечание
В зависимости от реализации базового отображения/hash_map эта функция может быть довольно дорогостоящей.

operator()()

шаблон<typename SparseMatrixType , шаблон< typename T > class MapTraits = StdMapTraits, int OuterPacketBits = 6>
Скаляр& Eigen::RandomSetter< SparseMatrixType, MapTraits, OuterPacketBits >::operator() ( Индекс строка,
Индекс столбец
)
inline
Возвращает
ссылку на коэффициент в заданных координатах строка, столбец

Документация для этого класса была сгенерирована из следующего файла:
  • RandomSetter.h

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

Spec-Zone.ru

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