使用循环将数字填充矩阵A (Eigen::Matrix2d A)
Fill matrix A ( Eigen::Matrix2d A) with numbers using loops
每当我尝试这段代码,我得到一个断言失败!如何用循环填充矩阵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; // ???
}
}
}
好吧,你做的是对的。然而,Matrix2d
类,顾名思义,是一个2x2矩阵。所以你不能在1之上增加row/col:
Eigen::Matrix2d A;
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
A(row,col) = 10;
}
}
如果你想要一个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;
}
}
如果维度在编译时已知,则可以使用避免内存分配并驻留在堆栈上的实现:
Eigen::Matrix<double, 5, 5> A;
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 5; ++col)
{
A(row,col) = 10;
}
}
Matrix2d
是Matrix<double, 2, 2>
的类型定义。所以它是一个2x2矩阵,你访问的列和行一直到4,这就是为什么你得到Assertion failed
。你需要一个 MatrixXd
x5:
Eigen::MatrixXd A(5, 5);
for (int row = 0; row < 5; ++row)
{
for (int col = 0; col < 5; ++col)
{
A(row,col) = 10;
}
}
相关文章:
- Eigen如何在容器循环中干净地附加矩阵
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- 使用Pybind11向Python公开Eigen::张量
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- Eigen:调用lpNorm()的正确方法
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- Eigen c++ 三角形来自
- 使用 operator() 扩展 Eigen::EigenBase
- 如何将 Eigen 库安装到 IAR c/c++ 编译器
- 初始化 std::数组 of Eigen::Map
- Eigen - matrix.transpose 会创建矩阵的副本吗?
- 将 MatrixXd 的行传递给要修改的函数,而不在 Eigen 中创建副本
- C++ Eigen 库中的 argmax() 方法
- Eigen::VectorXd 和 Boost::Odeint,不起作用
- 将数据从 std::Vector 存储到 Eigen::Vector 时出错
- Eigen LinSpaced - 已弃用的副本警告
- C++:如何将 std::vector 操作转换为 Eigen::VectorXf?
- Eigen:我应该使用对齐地图进行密集计算吗?
- 使用循环将数字填充矩阵A (Eigen::Matrix2d A)