如何创建一个矩阵,该矩阵的元素沿任意指定的对角线不循环?
一个玩具示例将指定一个3x3的矩阵,并将索引设置为-1,0,1,并获得一个完整的矩阵,如下所示:
1 1 0
1 1 1
0 1 1
答案 0 :(得分:2)
diagonal
方法接受一个索引(默认为零,表示主对角线)。负指数是对角线,正指数是对角线。例如:
#include <iostream>
#include <Eigen/Core>
using namespace Eigen;
int main()
{
MatrixXd mat(3,3);
mat.setZero();
for (auto i : { -1, 0, 1 })
mat.diagonal(i).setConstant(1);
std::cout << mat << "\n\n";
return 0;
}
输出您要查询的矩阵。