2014-10-02 4 views
-1

Мне нужно создать диагональный MatrixXd в C++, используя Eigen-библиотеку, в которой элементы на диагонали являются N репликацией более короткого VectorXd.Диагональ MatrixXd с конкатенированными повторами VectorXd

VectorXd R; // вектор размера n

VectorXd V; // вектор размера n * N, соответствующий N конкатенированной репликации R, i не khow как создать

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];