实测发现python的numpy.round()函数有bug,只好自写函数代替它

对于矩阵里的数值取整修改精度,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.]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值