Построение Eigen Matrix3d ​​из двойного 2D-массиваC++

Программы на C++. Форум разработчиков
Anonymous
Построение Eigen Matrix3d ​​из двойного 2D-массива

Сообщение Anonymous »

Почему у Эйгена нет простого метода построения, позволяющего ПРАВИЛЬНО преобразовать стандартный 2D-массив в матрицу? Например:

Код: Выделить всё

double a[3][3] = {{1,2,3},
{4,5,6},
{7,8,9}};
Я хочу построить Eigen::Matrix3d из. Однако ни одно из следующих действий не дает правильного результата:

Код: Выделить всё

Matrix3d b = Map(a[0]);
Matrix3d c = Map(a[0]);
Matrix3d d = Map(a[0]);
Все они возвращают одно и то же, а именно математическое транспонирование , т. е.

Код: Выделить всё

[1, 4, 7,
2, 5, 8,
3, 6, 9]
Я думаю, что это происходит из-за того, как Eigen хранит данные (основной столбец), однако я думаю, что предоставленные параметры RowMajor, ColMajor, DontAlign
code> будет иметь некоторое значение в его представлении.
Для меня безумие, что это работает не так, как ожидал бы любой математик или инженер. Я что-то упустил?

Подробнее здесь: https://stackoverflow.com/questions/793 ... uble-array

Вернуться в «C++»