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 Matrixa11 a12
a21 a22
a31 a32
Transponer Matrixa11 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:-
- Programmer til at udskrive 3×3 Matrix
- Summen af matrixelementer i Java
- Summen af diagonale elementer i Matrix i Java
- Rækkesum og Kolonnesum af Matrix i Java
- Matrix-addition i Java
- Subtraktion af to matricer i Java
- Matrix multiplikation i Java
- Menudrevet program til Matrix-operationer