2015-11-12 40 views
5

ben olarak verilir bir matris var:Eigen ve std :: vector

std::vector<std::vector<std::complex<double>>> A; 

Ve Eigen lineer cebir böyle kütüphaneye o harita istiyorum:

Eigen::Map<Eigen::MatrixXcd, Eigen::RowMajor> mat(A.data(),51,51); 

Ama kod, Eigen'in bunu kullanabilmesi için bir vektörün bir vektörünü dönüştürmek için zaten var mıdır?

+1

gibi daha iyi bir seçenek olmaktan şey ile, i ve j üzerinde döngüye olurdu? –

+0

Bunun bir matrisi saklamanın kolay bir yolu olduğunu mu düşündüm? Daha iyi bir yol nedir? – user1876942

cevap

11

Öz, bitişik bellek kullanır, std::vector gibi. Ancak, dış std::vector, her biri farklı karmaşık sayı kümesini işaret eden bitişik bir std::vector<std::complex<double> > kümesini içerir (ve farklı uzunluklarda olabilir). Bu nedenle, std "matrisi" bitişik değil. Yapabilecekleriniz, verileri Eigen matrisine kopyalamaktır, bunu yapmanın birçok yolu vardır. ilk etapta vektörlerin bir vektör olurdu Neden basit

Eigen::MatrixXcd mat(rows, cols); 
for(int i = 0; i < cols; i++) 
    mat.col(i) = Eigen::Map<Eigen::VectorXcd> (A[i].data(), rows); 
İlgili konular