Ранее я задавал аналогичный вопрос, но, к сожалению, не получил ответа.
У меня есть данные, которые хранятся в Eigen::MatrixXd
:
Eigen::MatrixXd hugeMatrix(n*n,c),
где n*n
большой, а c
(относительно) маленький, и каждый столбец состоит из данных, соответствующих симметричной c матрице.
В al oop по столбцам я хочу выполнить умножение матрицы на матрицу, используя maps
for(unsigned i = 0; i < hugeMat.cols(); ++i){
tmp += Eigen::Map<Eigen::MatrixXd>(hugeMat.data()+i*n*n,n,n) * ...
}
Поскольку матрицы являются симметричными c, это избыточно, поэтому я хотел бы сохранить только одну тройную angular часть матриц в каждом столбце, уменьшив количество их строк с От n*n
до n*(n+1)/2
.
Основная проблема здесь в том, что я не могу позволить себе хранить всю матрицу (что упростило бы отображение), ни копировать нижнюю часть в верхнюю часть angular для каждой матрицы. Есть ли объект типа Eigen
, который я могу сопоставить, для которого требуется только нижняя (или верхняя) часть tri angular?