簡體   English   中英

Eigen和std :: vector

[英]Eigen and std::vector

我有一個矩陣,給出如下:

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

我想將它映射到Eigen線性代數庫,如下所示:

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

但代碼失敗了

error: no matching function for call to        
‘Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1>, 1>::

無論如何轉換矢量的矢量,以便Eigen可以使用它嗎?

Eigen使用連續內存, std::vector 但是,外部std::vector包含一組連續的std::vector<std::complex<double> > ,每個都指向一組不同的復數(並且可以是不同的長度)。 因此,std“矩陣”不是連續的。 你可以做的是將數據復制到Eigen矩陣,有多種方法可以做到這一點。 最簡單的是循環遍歷ij ,更好的選擇是類似的

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM