Java >> Java tutorial >  >> Java

Transponering af en matrix i Java

Transponering af en matrix i Java | Java-program til at transponere 2D-array | I dette indlæg vil vi diskutere, hvad er transponeringen af ​​en matrix, og hvordan man skriver et Java-program for at finde transponeringen af ​​en matrix?

Hvad er transponeringen af ​​en matrix?

Lad A =[aij ] være en m × n matrix. Transponeringen af ​​A, betegnet med A t , er n × m matrixen opnået ved at ombytte rækkerne og kolonnerne i A. Med andre ord, hvis A t =[bij ], derefter bij =aji for i =1,2,...,n og j =1,2,...,m.

For 3×2 Matrix,

Original Matrix
a11 a12
a21 a22
a31 a32

Transponer Matrix
a11 a21 a31
a12 a22 a32

Eksempel ved brug af 2×2 matrix:-

     1   2
A = 
     3   4

Derefter transponeringen af ​​en matrix,

     1   3
At = 
     2   4

Java-metode til at finde transponeringen af ​​en matrix

// method to calculate the transpose of a matrix
public static int[][] transposeMatrix(int[][] a) {

   // calculate row and column size
   int row = a.length;
   int column = a[0].length;

   // declare a matrix to store resultant
   int temp[][] = new int[row][column];

   // calculate transpose of matrix
   // outer loop for row
   for (int i = 0; i < row; i++) {
     // inner loop for column
     for (int j = 0; j < column; j++) {
       // formula
       temp[i][j] = a[j][i];
     }
   }

   // return resultant matrix
   return temp;
}

Tidskompleksitet:- O(N 2 )

Hvis vi antager, at matricen er en kvadratisk matrix, vil størrelsen af ​​rækken og kolonnen være ens. Så bruger ovenstående Java-metode to loops (fra 1 til n) til at finde transponeringen af ​​matricen, derfor er tidskompleksiteten for metoden O(N 2 ).

Java-program til at finde transponering af en matrix

import java.util.Arrays;

public class Matrix {

  // main method
  public static void main(String[] args) {

    // declare and initialize a matrix
    int a[][] = { { 1, 2 }, { 8, 9 } };

    // find row and column size
    int row = a.length;
    int column = a[0].length;

    // declare new matrix to store result
    int transpose[][] = new int[row][column];

    // Transpose of matrix
    transpose = transposeMatrix(a);

    // display all matrices
    System.out.println("A = " + Arrays.deepToString(a));
    System.out.println("Transpose = " + 
                     Arrays.deepToString(transpose));
  }

  // method to calculate the transpose of a matrix
  public static int[][] transposeMatrix(int[][] a) {

    // calculate row and column size
    int row = a.length;
    int column = a[0].length;

    // declare a matrix to store resultant
    int temp[][] = new int[row][column];

    // calculate transpose of matrix
    // outer loop for row
    for (int i = 0; i < row; i++) {
      // inner loop for column
      for (int j = 0; j < column; j++) {
        // formula
        temp[i][j] = a[j][i];
      }
    }

    // return resultant matrix
    return temp;
  }

}

Output:-

A =[[ 1, 2] , [ 8, 9]]
Transponer =[[ 1, 8] , [ 2, 9]]

I dette program havde vi brugt deepToString()-metoden fra Arrays-klassen for at vise matrixen, men du kan også bruge de indlejrede loops. Se:- Forskellige måder at udskrive array på i Java

Program ved at tage input fra brugeren

I ovenstående program blev både matricer A og B initialiseret i programmet, lad os nu se et andet program til transponering af en matrix ved at tage inputværdi fra slutbrugeren ved hjælp af Scanner-klassen. Hvis du vil, kan du også bruge BufferedReader-klassen.

import java.util.Scanner;

public class Matrix {

  // main method
  public static void main(String[] args) {
    
    // create Scanner class object to read input
    Scanner scan = new Scanner(System.in);
    
    // declare variables
    int row = 0;
    int column = 0;
    int a[][] = null; // first matrix
    int transpose[][] = null; // resultant matrix
    
    // ask row and column size
    System.out.println("Enter row and column size: ");
    row = scan.nextInt();
    column = scan.nextInt();

    // initialize matrices
    a = new int[row][column];
    transpose = new int[row][column];
    
    // read matrix A 
    System.out.println("Enter Matrix A: ");
    for(int i=0; i<row; i++) {
      for(int j=0; j<column; j++) {
        // read matrix elements
        a[i][j] = scan.nextInt();
      }
    }

    // transpose of matrix
    transpose = transposeMatrix(a);

    // display resultant matrix
    System.out.println("Transpose =");
    for(int i=0; i<transpose.length; i++) {
      for(int j=0; j<transpose[0].length; j++) {
        System.out.print(transpose[i][j]+" ");
      }
      System.out.println(); // new line
    }
    
    // close Scanner
    scan.close();
  }

  // method to calculate the transpose of a matrix
  public static int[][] transposeMatrix(int[][] a) {

    // calculate row and column size
    int row = a.length;
    int column = a[0].length;

    // declare a matrix to store resultant
    int temp[][] = new int[row][column];

    // calculate transpose of matrix
    // outer loop for row
    for (int i = 0; i < row; i++) {
      // inner loop for column
      for (int j = 0; j < column; j++) {
        // formula
        temp[i][j] = a[j][i];
      }
    }

    // return resultant matrix
    return temp;
    
  }
}

Output:-

Indtast række- og kolonnestørrelse:
3 3
Indtast matrix A:
1 2 3
4 5 6
7 8 9
Transponer =
1 4 7
2 5 8
3 6 9

Inde i hovedmetoden havde vi først oprettet Scanner-klasseobjektet til at læse inputværdi. Så havde vi initialiseret de nødvendige variabler. Derefter er række- og kolonneværdier blevet læst fra slutbrugeren. Senere initialiseres matrix med standardværdien og ved siden af ​​det udfyldes matrixelementer i matrixen ved at tage inputværdier fra slutbrugeren. Derefter kaldes transposeMatrix()-metoden, som returnerer transponeringen af ​​den beståede matrix eller 2D-array. Til sidst vises matricer på skærmen.

Se flere matrixprogrammer i Java:- 

  1. Programmer til at udskrive 3×3 Matrix 
  2. Summen af ​​matrixelementer i Java
  3. Summen af ​​diagonale elementer i Matrix i Java 
  4. Rækkesum og Kolonnesum af Matrix i Java
  5. Matrix-addition i Java
  6. Subtraktion af to matricer i Java 
  7. Matrix multiplikation i Java
  8. Menudrevet program til Matrix-operationer

Java tag