我有一个向量说我想用来形成对角矩阵的向量 如下
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;
}
我现在有一个更大的矩阵说
Eigen::MatrixXd N(2,12);
N.setZero(2,12);
我现在想要根据预先指定的列表将diavector的元素放置到N矩阵的合适位置。例如,如果
double listIndices={0,2,3,5}
给出了块所在向量的位置 必须插入矩阵以获得矩阵N,如
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]
如何解决这个问题。
答案 0 :(得分:0)
您可以使用N.middleCols(listIndices[i]*stride, stride) = temp.asDiagonal()
,例如,stride
等于2。