关于矩阵相乘然后转置的代码,不要分开的

如题所述

public class MultiMat {

private int[][] a;//被乘矩阵
private int[][] b;//乘矩阵
//使用内置矩阵相乘
public MultiMat(){
defaultMat();
}
//矩阵自乘
public MultiMat(int[][] a){
this.a=a;
this.b=a;
}
public MultiMat(int[][] a,int[][] b){
this.a=a;
this.b=b;
}

/**
* @param type 得出结果后是否转置
* @return
*/
public int[][] getResult(boolean type){
int y=0,x=0;
if(!type){
y=a.length;
x=b[0].length;
}else{
x=a.length;
y=b[0].length;
}
int[][] rs=new int[x][y];
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
rs[i][j]=getElement(i,j);
}
}
return rs;
}

public int getElement(int x,int y){
int rs=0;
for(int i=0;i<a[0].length;i++)//
rs+=a[x][i]*b[i][y];
return rs;
}

public void defaultMat(){
a=new int[][]{{1,0},{1,1},{1,1}};
b=new int[][]{{1,1,1},{0,1,1}};
}

public void display(int[][] a){
for(int i=0;i<a.length;i++){
for(int j=0;j<a[0].length;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}

public static void main(String[] args) {
MultiMat mm=new MultiMat();
if(mm.a[0].length!=mm.b.length){
System.out.println("矩阵不能相乘!");
return;
}
int[][] rs=mm.getResult(true);
mm.display(mm.a);
System.out.println("*");
mm.display(mm.b);
System.out.println("=");
mm.display(rs);
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜