Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行

时间:2025-02-17 10:46:39
  • package test;
  • /**
  • * 矩阵运算
  • *
  • * @author Administrator
  • *
  • */
  • public class MatrixOperation {
  • /**
  • * 自动填充矩阵,将不足的行后自动补0
  • *
  • * @param M
  • * @return
  • */
  • public static int[][] fillMatrix(int[][] M) {
  • int ml = 0;// 最长行
  • for (int i = 0; i < ; i++) {
  • ml = ml < M[i].length ? M[i].length : ml;
  • }
  • int Nm[][] = new int[][ml];
  • for (int i = 0; i < ; i++) {
  • for (int j = 0; j < M[i].length; j++) {
  • Nm[i][j] = M[i][j];
  • }
  • }
  • return Nm;
  • }
  • /**
  • * 矩阵乘法A*B
  • *
  • * @param A
  • * @param B
  • * @return
  • * @throws Exception
  • */
  • public static int[][] multiplication(int[][] A, int[][] B) throws Exception {
  • // 先判断A矩阵的列是否等于B矩阵的行,A矩阵与B矩阵可以进行乘法运算的条件就是A的列数等于B的行数
  • A = fillMatrix(A);
  • B = fillMatrix(B);
  • if (A[0].length != ) {
  • throw new Exception("矩阵A的列不等于矩阵B的行!");
  • }
  • int C[][] = new int[][B[0].length];
  • for (int i = 0; i < ; i++) {
  • for (int j = 0; j < B[i].length; j++) {
  • for (int k = 0; k < A[i].length; k++) {
  • C[i][j] += A[i][k] * B[k][j];
  • }
  • }
  • }
  • return C;
  • }
  • /**
  • * 矩阵转置
  • *
  • * @param A
  • * @return
  • */
  • public static int[][] transposed(int[][] A) {
  • A = fillMatrix(A);
  • int[][] AT = new int[A[0].length][];
  • for (int i = 0; i < ; i++) {
  • for (int j = 0; j < AT[0].length; j++) {
  • AT[i][j] = A[j][i];
  • }
  • }
  • return AT;
  • }
  • }