1

我有一个计算旋转和平移矩阵的代码,如下所示:

matrix Matrix<double> rt = new Matrix<double>(3, 4);  
if (positiveCount[0] > positiveCount[1])  
{  
    rt = R[0].ConcateHorizontal(T[0].GetCol(2));  
}  
else  
{  
    rt = R[1].ConcateVertical(T[1].GetCol(2));  
}  

我得到了如图所示的错误在此处输入图像描述

我检查了所有的矩阵和元素,所有的大小都是匹配的。

有没有人遇到过同样的错误?

4

1 回答 1

1

问题涉及矩阵维度的适应性问题。

在其他部分:

rt = R[1].ConcateVertical(T[1].GetCol(2));  

错了,rt 是一个 3*4 矩阵,R[1] 是 3*3,T[1] 的第二列是 3*1

因此,如果我们想将 T[1].GetCol(2) 水平添加到 R[1],我们将其粘贴到矩阵 R 以获得 3*4 矩阵。当我们将行/列附加到另一个矩阵时,应该有一个大小匹配。

所以它应该被替换为:

 rt = R[1].ConcateHorizontal(T[1].GetCol(2));
于 2013-03-29T23:21:46.603 回答