2014-10-02 27 views
-1

我需要在C++中使用Eigen库创建一个对角线MatrixXd,其中对角线上的元素是N个较短VectorXd的复制。对角MatrixXd与VectorXd的级联重复

VectorXd R; //大小为n的向量

VectorXd V; //一个大小为n * N的向量,对应于R的N个连接的复制,我不知道如何创建

MatrixXd D = MatrixXd(V.asDiagonal()); //我的大小为n的对角矩阵N x n N

谢谢。

回答

0

东西沿着

VectorXd V(N * R.innerSize()); // construct vector of size N * n 
for(size_t i = 0; i < n; ++i) 
    for(size_t j = 0; j < R.innerSize(); ++j) 
     V[i * R.innerSize() + j] = R[j]; 
线