Matrix 特征库:实时处理

Matrix 特征库:实时处理,matrix,real-time,eigen,Matrix,Real Time,Eigen,我正在尝试在没有堆分配的情况下使用Eigen进行实时处理 据我所知: Matrix<double, Dynamic, Dynamic> allocates on the stack Matrix<double, Dynamic, Dynamic, AutoAlign, 1, 1> allocates on the heap and Matrix<double, 1, 1> allocates on the stack; 实时使用Eigen的一种方法是在启动时

我正在尝试在没有堆分配的情况下使用Eigen进行实时处理

据我所知:

Matrix<double, Dynamic, Dynamic> allocates on the stack
Matrix<double, Dynamic, Dynamic, AutoAlign, 1, 1> allocates on the heap
and Matrix<double, 1, 1> allocates on the stack;
实时使用Eigen的一种方法是在启动时调整矩阵大小,使用较大的大小,然后仅使用此大小的一小部分

我的问题是:使用诸如:Rm.colPivHouseholderQr.solveRhs之类的函数,如何使用动态矩阵执行此类计算? 函数将使用矩阵的整个大小来执行操作,这是不好的,因为我们只希望处理这个大小的一部分。 另外,我们显然不能使用.resize


那么,如何通过实时处理执行操作呢

实时处理通常涉及到在固定的时间表上重复完成相同的工作。动态内存分配的一种方法是将一个连续的块从一个内存池中线性分配出来。然后在处理周期结束时将所有内存标记为空闲。分配成本为O1,释放成本为O1,对于给定的工作量,您可以轻松保证满足所有内存分配。因此,一种解决方案是使用自定义分配器。

使用:

Rm.block<3, 3>(0,0).colPivHouseholderQr().solve(Rhs)