J'ai un vecteur dire que je veux utiliser pour former un vecteur de matrices diagonales comme suitRemplacer une matrice par une matrice diagonale à l'aide d'une liste prédéfinie à l'aide Eigen
double shapes=[2,3,4,5];
Vector2d temp;
std::vector<Eigen::DiagonalMatrix<double, 2> > diavector;
diavector.resize(4);
for(int i=0;i<4;i++){
temp<<shapes[i],shapes[i];
diavector[i]=temp.asDiagonal();
cout<<diavector[i].toDenseMatrix()<<endl;
}
J'ai maintenant un plus grand Matrices disent
Eigen::MatrixXd N(2,12);
N.setZero(2,12);
Je veux maintenant de placer les éléments de la diavector dans des positions appropriées de la matrice N conformément à une liste pré-assignée. par exemple, si
double listIndices={0,2,3,5}
qui donne la position du vecteur dans lequel les matrices de blocs doivent être insérées pour obtenir une matrice N comme
N=[2 0 0 0 3 0 4 0 0 0 5 0
0 2 0 0 0 3 0 4 0 0 0 5]
Comment ne s'y prendre.