矩阵相乘原理
已知矩阵A[3 X 2]和矩阵B[2 X 3],如下所示:
A是3行2列矩阵
A = {
a00 a01
a10 a11
a20 a21
}
B是2行3列矩阵
B = {
b00 b01 b02
b10 b11 b12
}
矩阵相乘,A的行与B的列相乘,形成一个 3 X 3的新矩阵,矩阵元素为:
C = {
c00 c01 c02
c10 c11 c12
c20 c21 c22
}
其中A,B,C矩阵元素关系如下:
c00 = a00 * b00 + a01 * b10 -- A的第一行乘上B的第一列得到C00
c01 = a00 * b01 + a01 * b11 -- A的第一行乘上B的第二列得到C01
c02 = a00 * b02 + a01 * b12 -- A的第一行乘上B的第三列得到C02
c10 = a10 * b00 + a11 * b10 -- A的第二行乘上B的第一列得到C10
c11 = a10 * b01 + a11 * b11 -- A的第二行乘上B的第二列得到C11
c12 = a10 * b02 + a11 * b12 -- A的第二行乘上B的第三列得到C12
c20 = a20 * b00 + a21 * b10 -- A的第三行乘上B的第一列得到C20
c21 = a20 * b01 + a21 * b11 -- A的第三行乘上B的第二列得到C21
c22 = a20 * b02 + a21 * b12 -- A的第三行乘上B的第三列得到C22
栗子如下:
A = {
1 2
2 3
4 5
}
B = {
2 2 1
3 4 3
}
A * B = {
1 * 2 + 2 * 3 1 * 2 + 2 * 4 1 * 1 + 2 * 3
2 * 2 + 3 * 3 2 * 2 + 3 * 4 2 * 1 + 3 * 3
4 * 2 + 5 * 3 4 * 2 + 5 * 4 4 * 1 + 5 * 3
}
矩阵相乘Java数组实现
public int[][] getMatrix(int[][] A, int[][] B){
if(A == null || B == null)
return null;
if(A[0].length !&