Какой самый быстрый способ редактировать диагональ разреженной матрицы в Eigen? Я уже заполнил его с помощью триплетов, но иногда мне нужно изменить все диагональные значения (они уже были установлены на ненулевое значение).Eigen - диагональное обновление разреженной матрицы
ответ
Если приемлемо, вы могли бы просто использовать их индексы, как
sp_mat(i, i)
Поскольку каждый доступ включает в себя бинарный поиск, производительность не может быть удовлетворено. В этом случае вы можете добиться большей производительности с некоторыми ограничениями.
- Вы не меняете основной макет матрицы, например. добавление/удаление nnzs, сжатие;
- Вы будете обращаться к диагонали повторно.
С этими ограничениями вы можете хранить указатели диагональных компонентов, чтобы вы могли получить доступ к данным позже в O (1) раз. Вы можете получить указатель с
&sp_mat(i, i)
Для завершения kangshiyin ответа, вы можете также редактировать диагонали через плотные векторные выражения, например, чтобы добавить 1 к каждому диагональному элементу:
sp_mat.diagonal().array() += 1;
Предупреждения: это будет работать только в том случае, если диагональные элементы уже существуют, что имеет место в исходном вопросе.
Правильно, для меня элементы уже будут существовать. Вы ожидали бы, что выражение будет быстрее/медленнее, чем сохранение указателей и изменение напрямую? – cgreen
Таким образом, этот подход будет по-прежнему включать двоичные запросы каждый раз, но в некоторых случаях их легче писать. – ggael
Есть .diagonal() в v3.2.9? – kangshiyin
- 1. разреженной матрицы диагональное умножение с использованием tensorflow
- 2. Возвращение разреженной матрицы в Eigen 3.1.0-alpha1
- 3. Eigen - непосредственно вычислить логарифмический детерминант огромной разреженной матрицы
- 4. Отображение сложной разреженной матрицы в Eigen из рабочей области MATLAB
- 5. Преобразование Eigen разреженной матрицы в массив в C++ с использованием
- 6. Eigen: Как извлечь строку из разреженной матрицы в массив
- 7. Eigen: как удалить инициализированный коэффициент из разреженной матрицы
- 8. Как рассчитать инверсию разреженной матрицы в Eigen-библиотеке
- 9. Инверсия разреженной матрицы
- 10. Графическая карта разреженной матрицы
- 11. ненулевые элементы разреженной матрицы
- 12. сложность формирования разреженной матрицы
- 13. Минимальное представление разреженной матрицы
- 14. Рассчитать сходство разреженной матрицы
- 15. Элементы разреженной матрицы
- 16. R построения разреженной матрицы
- 17. Python: Участок разреженной матрицы
- 18. Ускорить вычисления разреженной матрицы
- 19. Однораздельное разложение разреженной матрицы
- 20. Инициализация матрицы в Eigen
- 21. Заполнение разреженной матрицы в R
- 22. Eigen convert плотная матрица к разреженной
- 23. Повторная установка разреженной матрицы собственной библиотеки
- 24. Блок разреженной матрицы с собственной библиотекой
- 25. Расчет большой разреженной матрицы - MathNet Numerics
- 26. Создание и обновление разреженной матрицы в python с использованием scipy
- 27. Решение разреженной матрицы с использованием собственного
- 28. вычислительные собственные векторы разреженной матрицы в R
- 29. Создание разреженной матрицы в цикле
- 30. Умножение элементов столбца разреженной матрицы
Право, это точно мои условия. Знать, как получить доступ к указателям на эти позиции? – cgreen
@cgreen use '&' – kangshiyin