【发布时间】:2011-02-04 21:32:59
【问题描述】:
我正在尝试在 C++ 中实现用于数据融合的卡尔曼滤波器。作为项目的一部分,我需要实现一个函数来计算一个 3x3 矩阵的逆矩阵,该矩阵的每个元素本身都是一个 3x3 矩阵。你能帮我解决这个问题吗?我更喜欢需要最少计算量(CPU 效率最高)的解决方案。
还有一个问题,既然卡尔曼滤波器依赖于逆矩阵,那么当矩阵不可逆的情况下应该如何处理呢?
感谢您的帮助。
【问题讨论】:
-
在编写计算机函数之前,您需要一个数学描述。你有数学算法吗?
-
是否甚至可以反转矩阵矩阵?我真的很想知道......我看到的唯一可能的事情是反转每个子矩阵,但真的不知道这是否有任何好处。
-
@Xeo:好点...我想人们可以用 3x3 单位矩阵识别“1”,用 3x3 零矩阵识别“0”,分别用矩阵加法和乘法识别 + 和 *。但是矩阵乘法不是可交换的,所以我不知道代数是否可行。但这让我想知道,在这种情况下,将 Tuan 的结构视为 9x9 实数矩阵,然后将其反转是否有意义。
-
@Jim:嗯,这取决于 Tuan 需要整个矩阵还是只需要子矩阵......因为我真的想不出你需要矩阵的任何情况的矩阵。如果他需要整个矩阵,那么我想将其视为 9x9 矩阵会起作用。
-
@aschepler:我正在尝试使用该算法使用行列式 (det) 反转 3x3 矩阵,并将每个子矩阵视为一个数字,但它不起作用。由于每个元素都是一个矩阵,因此行列式结果是一个矩阵而不是一个数字。
标签: c++ filter matrix kalman-filter