特征库:实时处理

时间:2014-06-23 10:16:48

标签: 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的一种方法是在启动时调整矩阵,大尺寸,然后只使用这个尺寸的一小部分。

我的问题是:使用类似Rm.colPivHouseholderQr().solve(Rhs)的函数,如何使用动态矩阵执行此类计算?
该功能将采用矩阵的整个尺寸进行操作,这是不好的,因为我们只想要处理这个尺寸的一部分。
我们显然也可以use .resize()

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

2 个答案:

答案 0 :(得分:0)

实时处理通常涉及按固定时间表重复进行相同的工作。然后,动态内存分配的一种方法是使用线性分配的连续内存块(池)。然后,您可以在处理期结束时将所有内存标记为空闲。分配成本为O(1),解除分配成本为O(1),对于给定的工作量,您可以轻松保证满足所有内存分配。因此,一种解决方案是使用自定义分配器。

答案 1 :(得分:0)

使用block() method

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