矩阵运算
1、矩阵相加
注意:两个矩阵行的个数列的个数必须是一样的才可以相加
也就是矩阵中所有的元素相加
A + B
一个位置对一个位置加
public int[][] arrAdd(int[][] A,int[][] B){
for(int i = 0;i < A.length;i++){
for(int j = 0;j < B.length;j++){
A[i][j] += B[i][j];
}
}
return A;
}
2、矩阵相减
还是还有上面图解释
相减和相加实际上是一样的
同时是一个位置对着一个位置减
A - B
public static arrReduce(int[][] A,int[][] B){
for(int i = 0;i < A.length;i++){
for(int j = 0;j < B.length;j++){
A[i][j] -= B[i][j];
}
}
return A;
}
3、矩阵相乘
矩阵乘法和数据中的笛卡尔积有点类似
注意:矩阵相乘A矩阵的列和B矩阵的行比较相同
A为2 X 2 B为2 X 3
行列相等,取两边
A矩阵行中的元素依次乘以B矩阵列中的元素
{11+2-1,12+21,1*-3+22}
{11±1*-1,12±11,1*-3±1*2}
不过多少都是一样规律
一定要注意:A的行一定要等于B的列
public static int[][] arrRide(int[][] A,int[][] B){
if(A[0].length!=B.length){
int[][] arr = A;A = B;B = arr;
if(A[0].length!=B.length){
return new int[][]{};
}
}
int[][] newArr = new int[A.length][B[0].length];
for(int i = 0;i < newArr.length;i++){
for(int j = 0;j < newArr[0].length;j++){
for(int k = 0; k < A.length;k++){
newArr[i][j] += A[i][k]*B[k][j];
}
}
}
return newArr;
}
public static main(String[] args){
Scaaner sc = new Scaaner(System.in);
int M = sc.NextInt();
int N = sc.NextInt();
int[][] A = new int[M][N];
int[][] B = new int[M][N];
for(int i = 0;i < M;i++){
for(int j = 0;j < N;j++){
A[i][j] = sc.NextInt();
}
}
for(int i = 0;i < M;i++){
for(int j = 0;j < N;j++){
B[i][j] = sc.NextInt();
}
}
for(int i = 0;i < M;i++){
for(int j = 0;j < N;j++){
B[i][j] -= A[i][j];
B[i][j] /= 2;
}
}
for(int i = 0;i < M;i++){
Arrays.toString(B[i]);
}
}