每当我尝试这段代码时,我都会得到一个断言失败!如何使用循环填充矩阵 A ?
#include <iostream>
#include "../eigen3/Eigen/Dense"
int main ()
{
Eigen::Matrix2d A;
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 5; ++col)
{
// A(row,col)=10; // ???
}
}
}
Run Code Online (Sandbox Code Playgroud)
嗯,你在做什么是正确的。但是,Matrix2d顾名思义,该类是一个 2x2 矩阵。所以你不能将 row/col 增加到 1 以上:
Eigen::Matrix2d A;
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
A(row,col) = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要一个 5x5 矩阵,您可以使用带有合适构造函数的 Xd 矩阵:
Eigen::MatrixXd A(5, 5);
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 5; ++col)
{
A(row,col) = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
如果在编译时已知维度,您可以选择使用避免内存分配并存在于堆栈中的实现:
Eigen::Matrix<double, 5, 5> A;
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 5; ++col)
{
A(row,col) = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |