Eigen中如何将一个9*1的向量按行展开成33矩阵
时间: 2024-02-21 19:01:19 浏览: 147
在Eigen中,我们可以使用`Map`和`Matrix`来将一个9*1的向量按行展开成3*3矩阵。具体的代码如下:
```cpp
#include <iostream>
#include <Eigen/Dense>
int main()
{
Eigen::VectorXd vec(9);
vec << 1, 2, 3, 4, 5, 6, 7, 8, 9;
Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::RowMajor>> mat(vec.data());
std::cout << mat << std::endl;
return 0;
}
```
首先,我们需要定义一个9维的向量`vec`,并将元素填充到向量中。接着,我们使用`Eigen::Map`将向量`vec`映射为一个3*3的矩阵`mat`。需要注意的是,我们使用了`Eigen::Matrix`来定义矩阵,其中第三个参数`Eigen::RowMajor`表示矩阵按行存储。
最后,我们可以输出矩阵`mat`,结果为:
```
1 2 3
4 5 6
7 8 9
```
可以看到,我们已经成功将一个9*1的向量按行展开成3*3矩阵。
阅读全文