线性代数_工程实践-计算实现numpy

数学概念

1.矩阵乘法
   01.两个矩阵A和B相乘,需要满足A的列数等于B的行数
   02.单位矩阵 如果A是n×n矩阵,I是单位矩阵,则AI= A, IA = A
   03.逆矩阵  矩阵A的逆矩阵    A^-1, A A^-1=A^-1A= I,I是单位矩阵 
          当一个矩阵没有逆矩阵的时候,称该矩阵为奇异矩阵
   04. 转置矩阵 矩阵的转置就是行列互换,用A^T表示A的转置矩阵
   05. 对称矩阵: 如果一个矩阵转置后等于原矩阵,那么这个矩阵称为对称矩阵。由定义可知,对称矩阵一定是方阵	  
   06. 若矩阵为方阵且其逆矩阵存在时,矩阵的逆的转置 等于 矩阵的转置的逆   设A为可逆方阵 (A^{-1})^T = (A^T)^{-1}),
   07.‌ 矩阵的逆等于矩阵的转置的矩阵称为正交矩阵‌,满足 ( Q^{-1} = Q^T ) 或等价地 ( Q^T Q = I )(其中 ( I ) 为单位矩阵
2.矩阵乘法结合律
    遵循矩阵乘法结合律 最终变换结果相同
    数学上等价:Tx × P^T = (P × Tx^T)^T
	左乘:点云需要转置 
3.	矩阵分块运算--分块上下三角矩阵
    P2 =R*P1 + T1  (先旋转再平移)变换矩阵的方式
       T1= R*T2 故 T2 = R^T *T1
    (先平移再旋转)   
    P2 = R(P1 + T2) =  R*P1 + R*T2
	分块矩阵的计算 分块矩阵 上三角矩阵的乘法
     [ R,T     [ P,   = [RP+T,		 
	   0,1]  *   1]        1] 

物理概念

计算机实现

 points_h = np.hstack([points, np.ones((points.shape[0], 1),dtypes=np.float32)])
 # 左乘:T × P^T
 transformed = (transform_matrix @ points_h.T).T
 ## points_h[:,:3] = np.dot(TX_L_V, points_h.T).T[:.:3]
 
 ###左乘  外侧相同,内测从右往左
   P_imu = T_vehicle_2_imu * T_lidar_2_vehicle * P_lidar

## 矩阵乘法的顺序是从右向左  从右向左应用变换:先应用 T_lidar_to_vehicle,再应用 T_vehicle_to_imu
     相当于:点_imu = T_vehicle_to_imu * (T_lidar_to_vehicle × 点_lidar)
	         点_imu = T_vehicle_to_imu *  T_lidar_to_vehicle *  点_lidar= T__lidar_2_imu *  点_lidar

        T_lidar_to_imu = T_vehicle_to_imu × T_lidar_to_vehicle				 
### 注意:这里使用的是左乘,即变换矩阵依次左乘点坐标
 使用 np.dot() 或 @ 运算符进行矩阵乘法

  注意矩阵乘法的顺序(从右向左应用变换)
posted @ 2025-09-29 17:14  辰令  阅读(12)  评论(0)    收藏  举报