Python中旋转平移齐次矩阵拼接问题(MATLAB转Python)
解决Python中构造4×4齐次变换矩阵的问题
你当前构造齐次变换矩阵RT的代码会因为数组维度不匹配报错,直接用np.array([[R, T], [0,0,0,1]])无法正确拼接出4×4矩阵——原因是R是3×3数组、T是3×1数组,numpy无法自动将它们组合成二维的4×4矩阵,反而会生成高维数组。
正确实现方法
方法1:使用np.block(最贴近MATLAB的拼接逻辑)
np.block可以像MATLAB里一样直接按块拼接矩阵,写法直观:
# 构造4×4齐次变换矩阵 RT = np.block([ [R, T], [[0, 0, 0, 1]] ])
方法2:分步使用np.hstack和np.vstack
先横向拼接旋转矩阵R和平移向量T得到3×4的顶部矩阵,再纵向拼接底部的[0,0,0,1]行:
# 横向拼接R(3×3)和T(3×1),得到3×4矩阵 top_part = np.hstack((R, T)) # 构造底部的1×4行向量 bottom_part = np.array([[0, 0, 0, 1]]) # 纵向拼接成4×4矩阵 RT = np.vstack((top_part, bottom_part))
额外小修正
你的代码里导入matplotlib的语句有误,应该改为:
import matplotlib.pyplot as plt
内容的提问来源于stack exchange,提问作者Nick X Tsui
相关产品推荐
相关产品推荐

