对于矩阵里的数值取整修改精度,numpy库里有一个round函数,经过多次试验,有bug,于是笔者自己编写了
代码如下,因为是用于机器人运动学矩阵的,如下代码仅用于4*4矩阵,如果想把他拿来做其它规格的矩阵取整,直接修改range里的参数即可:
#define round function for matrix ,author‘s mailbox: gongal@163.com :
import numpy as np
from numpy import *;
import math
def roundt(A,a):
B=array(A)
for i in range(0,4):
for j in range(0,4):
B[i][j]=round(B[i][j],a)
return np.matrix(B)
经过测试,六个关节矩阵相乘以后,可以拿到与原始数据差不多的数据,精度可以保证,以下是用函数处理之前六个关节矩阵的相乘的结果与处理之后结果的对比:
The original matrix:
[[ 3.53553391e-01 -6.12372436e-01 7.07106781e-01 -3.84546373e+02]]
[[ 3.53553391e-01 -6.12372436e-01 -7.07106781e-01 -6.55297559e+02]]
[[ 0.8660254 0.5 0. 41.875 ]]
[[0. 0. 0. 1.]]
The matrix after function 'roundt( , )':
[[ 3.53550000e-01 -6.12348600e-01 7.07100000e-01 -3.84544385e+02]]
[[ 3.53550000e-01 -6.12348600e-01 -7.07100000e-01 -6.55292975e+02]]
[[ 0.866 0.5 0. 41.875]]
[[0. 0. 0. 1.]]