本征创建 super/sub 对角矩阵
eigen create super/sub diagonal matrix
如何在不循环的情况下创建一个沿任意指定对角线包含元素的矩阵?
一个玩具示例将指定一个 3x3 的矩阵并将索引设置为 -1,0,1 并获得一个完整的矩阵,如下所示:
1 1 0
1 1 1
0 1 1
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;
}
输出你问的矩阵。
如何在不循环的情况下创建一个沿任意指定对角线包含元素的矩阵?
一个玩具示例将指定一个 3x3 的矩阵并将索引设置为 -1,0,1 并获得一个完整的矩阵,如下所示:
1 1 0
1 1 1
0 1 1
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;
}
输出你问的矩阵。