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] の 2 列目は 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 に答える