人們在處理機械臂關節矩陣時,需要大量的手工相乘代數運算。 由於是推導公式,而不是進行數值計算,計算機不能直接參與協助。
在推導過程中,有大量的多項式代數相乘,手工抄寫極易出錯。
筆者於是想通過python程序來協助完成部分任務。
編寫了如下程序,用以實現兩個代數4*4矩陣的乘法。
目前程序的輸出還比較粗糙,如果哪位程序大佬能幫助修正,非常感謝。
本程序有參考numpy中文文檔羣裏以及網絡上 幽蘭@幽香、defias和leo的程序語法,在此對他們表示感謝。
程序調試過程中,需要一個exel文件: test1.xlsx 大家可以加我微信索取,以便進行測試。微信號是 a18705416479
# Authored by Tom_Gong email: [email protected]
################################################
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表,中間隔一行,一共展九行四列。每個表裏面盛放要相乘的矩陣即可。