Java实现矩阵相乘
2017-05-15 23:42
399 查看
事情原委:
大一刚学Java的时候,当时也学了线性代数这门课,在方程组基础向矩阵转换的思想方法上,感觉矩阵计算比较麻烦,所以当时一直想写一个小程序来通过输入两个矩阵输出相应的相乘之后的结果矩阵。鉴于当时刚刚接手Java,对于基本的输入输出都没有搞清楚,对于矩阵也运用不灵活,方法也不怎么会声明,出现一个数组越界或者空指针错误就写不下去了,后来MATLAB的应用也把它抛在一边,现在花点小时间来实现一下当时的小愿望。
M*N 矩阵 与 N * P 矩阵相乘,得到 M * P 矩阵。
M*N 矩阵是指矩阵有M行,N列,相应的矩阵Matrix用二维数组来实现。
Matrix.length =M,Matrix[0].length=N 。
为了便于操作,for循环的嵌套,在计算的时候把第二个矩阵转置,在操作上会简单很多。
闲话少说了,直接上代码:
下边是main方法:
大一刚学Java的时候,当时也学了线性代数这门课,在方程组基础向矩阵转换的思想方法上,感觉矩阵计算比较麻烦,所以当时一直想写一个小程序来通过输入两个矩阵输出相应的相乘之后的结果矩阵。鉴于当时刚刚接手Java,对于基本的输入输出都没有搞清楚,对于矩阵也运用不灵活,方法也不怎么会声明,出现一个数组越界或者空指针错误就写不下去了,后来MATLAB的应用也把它抛在一边,现在花点小时间来实现一下当时的小愿望。
M*N 矩阵 与 N * P 矩阵相乘,得到 M * P 矩阵。
M*N 矩阵是指矩阵有M行,N列,相应的矩阵Matrix用二维数组来实现。
Matrix.length =M,Matrix[0].length=N 。
为了便于操作,for循环的嵌套,在计算的时候把第二个矩阵转置,在操作上会简单很多。
闲话少说了,直接上代码:
import java.util.Scanner; public class Matrix { public int[][]inputMatrix(int m,int n){ int matrix1[][]=new int[m] ; Scanner sc= new Scanner(System.in); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ matrix1[i][j]=sc.nextInt(); } } return matrix1; } public int [][]transMatirx(int [][]matrix){ if(matrix.length==0) return null; int [][]result= new int[matrix[0].length][matrix.length]; for(int i=0;i<matrix.length;i++){ for(int j=0;j<matrix[0].length;j++){ result[j][i]=matrix[i][j]; } } return result; } public void print(int [][]matrix){ if(matrix.length!=0){ for(int i=0;i<matrix.length;i++){ for(int j=0;j<matrix[0].length;j++){ System.out.print(matrix[i][j]+" "); } System.out.println(); } } } public int [][]mulMatrix(int [][]matrix1,int[][]matrix2){ if(matrix1.length==0||matrix2.length==0||matrix1[0].length!=matrix2.length){ return null; } int m=matrix1.length; //matrix1 行数 int n=matrix1[0].length;//matrix1列数(每一行的元素数目) int [][]matrix3= transMatirx(matrix2);//将矩阵matrix2转置 int p=matrix3.length; int [][]result= new int [m][p]; for(int t=0;t<m;t++){ for(int s=0;s<p;s++){ int result1=0; for(int q=0;q<n;q++){ result1+=matrix1[t][q]*matrix3[s][q]; } result[t][s]=result1; } } return result; } }
下边是main方法:
public static void main(String []args){ Matrix mm= new Matrix(); int m,n,p; Scanner scan =new Scanner(System.in); System.out.println("input the size of the matrix1:"); m=scan.nextInt(); System.out.println("input the col of the matrix1:"); n=scan.nextInt(); System.out.println("input the size of the matrix2:"); p=scan.nextInt(); int matrix1[][]=new int[m] ;//m*n Matrix System.out.println("input the matrix1:"); matrix1=mm.inputMatrix(m, n); int matrix2[][]=new int [p];// n*p Matrix System.out.println("input the matrix2:"); matrix2=mm.inputMatrix(n, p); int result[][]=mm.mulMatrix(matrix1, matrix2); if(result==null){ System.out.println("the two matrix can't multply with each other."); } else{ System.out.println("the result is:"); mm.print(result); } }
相关文章推荐
- 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
- 矩阵相加、相乘,Java实现
- java实现矩阵相乘
- Java实现用传统分治法解决矩阵相乘问题
- 矩阵相乘的三种方法(java实现)
- java实现矩阵乘法public class MatrixMultiply { //A=A*B 将相乘的结果赋给A public static void Multiply(double[][
- Java实现两个矩阵相乘
- 矩阵相乘算法的Java语言实现
- 行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)
- java中用ArrayList类实现正整数大数相加与相乘
- java第四周 任务四 用二维数组表示矩阵,实现矩阵乘法
- hadoop矩阵相乘简单实现
- java第二周作业--实现矩阵的加法和乘法运算
- JAVA--第四周实验--任务4--求矩阵元素相乘(编程思想)
- MapReduce框架中矩阵相乘的算法思路及其实现
- 基于MPI的矩阵相乘summa算法实现(附源程序)
- 蛇形遍历矩阵 50行JAVA代码实现 欢迎挑刺
- opencv 矩阵与一个常数相乘的 两种实现方法
- java 实现螺旋矩阵
- 分治算法-大整数相乘(JAVA实现)