我正在编译一个使用多个Eigen :: MatrixXd方法的程序,虽然在编译时没有出现任何错误但运行它我得到以下错误:
darwin-pi2: /usr/include/Eigen/src/Core/Assign.h:498: Derived& Eigen::DenseBase<Derived>::lazyAssign(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::Matrix<double, -1, -1>; Derived = Eigen::Matrix<double, 15, 15, 0, 15, 15>]: Assertion `rows() == other.rows() && cols() == other.cols()' failed.
我想这与Eigen矩阵有关,但我不明白Assertion rows() == other.rows() && cols() == other.cols()' failed
的含义。
答案 0 :(得分:1)
因为Eigen::MatrixXd
具有在运行时确定的维度,所以编译时大小检查全部被禁用并延迟到运行时。
在这种情况下,您看起来像是从动态大小矩阵分配到15x15矩阵。尝试仔细检查并调试该动态的大小。
答案 1 :(得分:0)
在matlab中,矩阵m
的索引从1开始。但在本征中,它从0开始。显示一个简单的例子。
#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
MatrixXd m(2,2);
m(0,0) = 3; // INDEX starts from 0, not 1
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
std::cout << m << std::endl;
}
有关详细信息,请单击docs。