人们在处理机械臂关节矩阵时,需要大量的手工相乘代数运算。 由于是推导公式,而不是进行数值计算,计算机不能直接参与协助。
在推导过程中,有大量的多项式代数相乘,手工抄写极易出错。
笔者于是想通过python程序来协助完成部分任务。
编写了如下程序,用以实现两个代数4*4矩阵的乘法。
目前程序的输出还比较粗糙,如果哪位程序大佬能帮助修正,非常感谢。
本程序有参考numpy中文文档群里以及网络上 幽兰@幽香、defias和leo的程序语法,在此对他们表示感谢。
程序调试过程中,需要一个exel文件: test1.xlsx 大家可以加我微信索取,以便进行测试。微信号是 a18705416479
# Authored by Tom_Gong email: gongal@163.com
################################################
import xlrd
import xlwt
m=0
n=5
a=''
b=''
c='0'
workbook = xlwt.Workbook() #注意Workbook的开头W要大写
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
borders = xlwt.Borders() # Create borders
borders.left = xlwt.Borders.MEDIUM # 添加边框-虚线边框
borders.right = xlwt.Borders.MEDIUM # 添加边框-虚线边框
borders.top = xlwt.Borders.MEDIUM # 添加边框-虚线边框
borders.bottom = xlwt.Borders.MEDIUM
borders.left_colour = 0x90 # 边框上色
borders.right_colour = 0x90
borders.top_colour = 0x90
borders.bottom_colour = 0x90
style = xlwt.XFStyle() # Create style
style.borders = borders
data = xlrd.open_workbook('test1.xlsx')
table = data.sheets()[0]
for i in range (0,4):
for j in range(0,4):
#for k in range(0,4):
for l in range(0,4):
a=str(table.cell_value(j,l))
b=str(table.cell_value(5+l,i))
if ( a!='0'and b!='0'):
c=c+'+'+'('+a+')'+'*'+'('+b+')'
a=''
b=''
c=c.replace('0+','')
c=c.replace('(1)*','')
c=c.replace('*(1)','')
sheet1.write(j+1,i+1,c,style)
c='0'
#保存该excel文件,有同名文件时直接覆盖
workbook.save('test2.xls')
print( '创建excel文件完成!')
程序中用到的附带文件test1.xlsx
https://download.csdn.net/download/tom13a/11441923
这个文件也可以自己做一个,新建一个文件名问test1.xlsx的exel文件,sheet1里面左上角放上两个4乘以4表,中间隔一行,一共展九行四列。每个表里面盛放要相乘的矩阵即可。