2014-07-03 2 views
0

Я хочу построить тип Eigen::Array<double,Dynamic,Dynamic> типа EigenBase. Согласно документации, которую я должен быть в состоянии использовать конструктор копирования с помощью другого массива, например:Как построить динамический массив из EigenBase?

http://eigen.tuxfamily.org/dox/classEigen_1_1Array.html#a0b2d2aba2e64b58c980399838f60205c

Так что я попытался следующие:

#include <iostream> 
#include <Eigen/Dense> 
int main() 
{ 
    Eigen::Array<double,2,2> a(1,2,3,4); 
    Eigen::Array<double,Eigen::Dynamic,Eigen::Dynamic> b(a); 
    return 0; 
} 

Но я получил эту ошибку:

error: static assertion failed: THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE

Я имею в виду, сообщение довольно ясно, но мой вопрос заключается в том, как я могу достичь такой функциональности, не дожидаясь изменения размера массива и fi lling его по частям?

ответ

1

Как показано на ваш предыдущий вопрос здесь: What do the initialized Array constructors do?

Вы не можете инициализировать 4 длинный массив как это:

Eigen::Array<double,2,2> a(1,2,3,4); 

ваш выбор здесь являются:

Eigen::Array<double,1,4> a(1,2,3,4); 
Eigen::Array<double,4,1> a(1,2,3,4); 

Опять вы бы лучше инициализировать массив следующим образом:

Eigen::Array<double,2,2> a; 
a << 1, 2, 3, 4; 
+0

Извините, что это была опечатка, см. Исправленную версию (мой вопрос был о динамическом массиве) – arman

+0

Аргх сожалеет о моей ошибке, теперь она работает. – arman

+0

@Jason Мой ответ здесь не имеет смысла. Вы хотите отменить изменения в вопросе, если это было то, что я сказал здесь, что исправил его? –

Смежные вопросы