我在swift和python中编写矩阵乘法代码但两个代码都生成不同的输出。 我也用C ++编写这段代码,但它生成与python相同的输出,我一次又一次地检查了swift代码但是没有区别 我试图将这两个矩阵相乘
1 0 1
0 0 0
1 0 1
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 0
0 2 3 4 5 6 7 8 9 0
0 3 4 5 6 7 8 9 5 0
0 4 5 6 7 8 9 3 4 0
0 4 5 6 7 8 9 2 3 0
0 5 6 7 8 9 0 4 6 0
0 6 7 8 9 1 2 3 8 0
0 7 8 9 1 2 3 0 5 0
0 8 9 2 4 5 6 4 8 0
0 0 0 0 0 0 0 0 0 0
row,col = 8,9
result = [[0 for x in range(row)] for y in range(col)]
row,col=0,0
for matrixB_Row in range(0,9):
for matrixB_Col in range(0,8):
for matrixA_Row in range(0,3):
for i in range(0,3):
for matrixA_Col in range(0,3):
result[row][col] = result[row][col]+(matrixA[matrixA_Row][matrixA_Col]*matrixA[matrixB_Row][matrixB_Col])
matrixA_Col+=1
matrixB_Row+=1
i+=1
matrixB_Col+=1
matrixB_Row = matrixB_Row-3
matrixB_Col = matrixB_Col-3
matrixA_Row+=1
col+=1
matrixB_Col+=1
row+=1
col=0
matrixB_Row=+1
matrixB_Col=0
var Row = 0, Col = 0, MatrixB_Col = 0, MatrixB_Row = 0, MatrixA_Col = 0, MatrixA_Row = 0, i = 0
var result = [[Int]](repeating: [Int](repeating: 0, count: 8), count: 9)
while MatrixB_Row < 9
{
MatrixB_Col = 0
while MatrixB_Col < 8{
MatrixA_Row = 0
while MatrixA_Row < 3 {
i = 0
while i < 3 {
MatrixA_Col = 0
while MatrixA_Col < 3{
result[Row][Col] += (matrixA[MatrixA_Row][MatrixA_Col] * matrixB[MatrixB_Row][MatrixB_Col]);
MatrixA_Col+=1
MatrixB_Row+=1
}
i+=1
MatrixB_Col+=1
MatrixB_Row = MatrixB_Row - 3
}
MatrixA_Row+=1
MatrixB_Col = MatrixB_Col - 3
}
MatrixB_Col+=1
Col+=1
}
Row+=1
Col=0
MatrixB_Row+=1
MatrixB_Col = 0
}
答案 0 :(得分:2)
你的python代码中的乘法:
result[row][col] = result[row][col]+(matrixA[matrixA_Row][matrixA_Col]*matrixA[matrixB_Row][matrixB_Col])
在这里,你只使用矩阵A中的元素进行乘法。
快速代码中的乘法:
result[Row][Col] += (matrixA[MatrixA_Row][MatrixA_Col] * matrixB[MatrixB_Row][MatrixB_Col]);
在这里你同时使用矩阵A和矩阵B. 这就是结果不同的原因 - 你的python代码中有错误。
答案 1 :(得分:0)