基本的话我需要一个简单而快速的算法来从C * X = M中找到解X,其中所有变量都是矩阵。更多解释如下。
我正在尝试计算一个特定的矩阵,但它并没有按预期工作:
Vz - negative Z-axis vector (or any other)
Vg - current gravity vector
Vc - zero reference vector (for gravity calibration)
M0 - current rotation matrix
C0 - reference rotation matrix
X0 - unknown rotation matrix to find
*t - transposed versions of above matrices
Upong runtime only Vg, M and C are known.
Rules:
1) Vz == Vg * M0
2) Vg == Vz * Mt
3) Vz == Vc * C0
4) Vc == Vz * Ct
5) Vz == Vx * X0
6) Vx == Vz * Xt
7) Vx == Vg * C0
8) M0 == C0 * X0 (wrong!!! see update notes below)
...
?) X0 = ?
我尝试使用这样的公式:
X0 = M0 * Ct
但是得到的矩阵并没有像预期的那样满足规则(5)和(6)。
这里有什么想法吗?
更新
我尝试的公式(X0 = M0 * Ct)是正确的。 问题是不正确的,因为(8)实际上是M0 = X0 * C0。
我认为它不起作用的问题是因为我试图计算Vx = Vg * C0 - 但实际上Vx = Vg * C0和Vg = Vx * Ct都不正确。
因此,我正在进行下一个任务 - 最好将其描述为一个新问题: - )
答案 0 :(得分:0)
如果M0 = C0 * X0
(规则8),则X0 = Ct * M0
(您的公式X0 = M0 * Ct
错误)。
如果此X0
不满足其他规则,则您的规则集没有解决方案。
答案 1 :(得分:0)
你需要知道两件事:
我们知道:
M0 = C0 * X0 (8)
这些都是轮换。所以:
inverse (C0) = Ct
Ct预乘(8):
Ct * M0 = Ct * C0 * X0
= X0
因此我们有X0。