Построение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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