#c #matrix #eigen
Вопрос:
Я использую Eigen, и у меня есть две матрицы A(a,b) и B(c,d), которые я хотел бы составить в новую C(a c, b=d), имея нечетные строки из A и четные строки из B.
Теперь a и c-это строки, b и d-столбцы, и я хотел бы использовать карту, чтобы значения не копировались. Конечно, циклы не приветствуются, если только они не могут избежать копирования. 😉
Спасибо
ИЗМЕНИТЬ: Вариант использования: A и B-это разделенные вершинами и нормалями матрицы сетки,
VectorXd A(a,b); -- vertices
VectorXd B(c,d); -- normals
в то время как C-это вершинный и нормальный одиночный объект в облаке точек.
struct Point{
VectorXd A; -- vertices
VectorXd B; -- normals
}
Копирование здесь означает удвоение использования памяти
ПРАВКА: Забыл сказать, что b=d равно
Комментарии:
1. Похоже на проблему x-y. Чего вы пытаетесь этим добиться? Гораздо лучше выполнить одноразовую копию, чем многократное косвенное использование матрицы.
2. Мне любопытно, каков вариант использования для этого. Это то, что вы хотите
C
автоматически обновлять, когдаA
илиB
изменять? Если это связано с соображениями производительности, вы, вероятно, смотрите в неправильном направлении.3. С существующей функциональностью вы, вероятно, могли бы сначала создать окончательную
C
матрицу и иметьA
иB
как карты внутри нее. Или создайте пользовательскийNullaryExpr
( eigen.tuxfamily.org/dox-devel/TopicCustomizing_NullaryExpr.html — эта ссылка просто показывает смутное направление, а не решение вашей проблемы)