草庐IT

MatrixBase

全部标签

c++ - Derived 到 MatrixBase<Derived> 转换背后的故事

当您将矩阵对象作为MatrixBase引用传递给函数时会发生什么?我不明白幕后到底发生了什么。示例函数代码如下:#include#includeusingnamspaceEigen;templatevoidprint_size(constMatrixBase&b){std::coutm;m它给出了以下输出:size(rows,cols):4(2,2)11616比1的差异从何而来?还有为什么需要转换?提前致谢! 最佳答案 sizeof在编译时进行评估,因此它与声明的(静态)对象类型有关。b类型为MatrixBase(忽略引用,就像si

c++ - Eigen,如何访问 MatrixBase<Derived> 的底层数组

我需要访问包含MatrixBaseEigen矩阵数据的数组。Eigen库有data()方法,它返回一个指向数组的指针,但是它只能从矩阵访问type.MatrixBase没有类似的方法,即使MatrixBase类应该充当模板并且实际类型应该只是一个Matrix。如果我尝试访问MatrixBase.data(),我会收到编译时错误:templatevoiduscgemv(floatalpha,constUSCMatrix&a,constMatrixBase&b,constMatrixBase&c_const){//...somecodefloat*bMat=b.data();///more