我正在编译一个使用几个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.
我猜是和特征矩阵有关的东西,但是我不明白Assertion rows() == other.rows() && cols() == other.cols()' failed
是什么意思
因为Eigen::MatrixXd
的维度是在运行时确定的,所以编译时的大小检查都是禁用的,并且延迟到运行时。
在这种情况下,看起来你是从一个动态大小的矩阵分配到一个15x15的矩阵。
在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.