矩阵的转置 java

本文介绍了矩阵转置的概念,强调其在矩阵运算中的重要性。通过一个具体的例子展示如何使用Java代码实现矩阵的转置,并提供了不开辟新数组、直接在原数组上进行转置操作的思路。
摘要由CSDN通过智能技术生成

矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。

设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:
把m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵。例如:
矩阵的转置矩阵为

代码:

public static void main(String[] args) {
		int[][] a= {
  {1,2,0},{3,-1,4}};
		//行和列发生调换
		int[][] b = new int[a[0].length][a.length];
		for(int i = 0; i < a.length; i++){
			for(int j = i; j < a[0].length; j++){
				b[j][i] = a[i][j];
			}
		}
		for(int c[] :b){
			for(int i :c){
				System.out.print(i+" ");
			}
			System.out.println();
		}
	}

运行结果:
在这里插入图片描述
如果矩阵是n*n,现在不让开辟新的数组来存储转置操作后的数组,就在原数组上修改

//如果是n*n
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,请稍等... 以下是使用 Java 编写的二维数组实现矩阵相乘与矩阵转置的源代码: 矩阵相乘: ``` public class MatrixMultiplication { public static void main(String[] args) { int[][] matrixA = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int[][] matrixB = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}}; int[][] result = multiply(matrixA, matrixB); printMatrix(result); } public static int[][] multiply(int[][] matrixA, int[][] matrixB) { int aRows = matrixA.length; int aCols = matrixA[0].length; int bRows = matrixB.length; int bCols = matrixB[0].length; if (aCols != bRows) { throw new IllegalArgumentException("The number of columns in matrix A must equal the number of rows in matrix B!"); } int[][] result = new int[aRows][bCols]; for (int i = 0; i < aRows; i++) { for (int j = 0; j < bCols; j++) { for (int k = 0; k < aCols; k++) { result[i][j] += matrixA[i][k] * matrixB[k][j]; } } } return result; } public static void printMatrix(int[][] matrix) { for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } } ``` 矩阵转置: ``` public class MatrixTranspose { public static void main(String[] args) { int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int[][] result = transpose(matrix); printMatrix(result); } public static int[][] transpose(int[][] matrix) { int rows = matrix.length; int cols = matrix[0].length; int[][] result = new int[cols][rows]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { result[j][i] = matrix[i][j]; } } return result; } public static void printMatrix(int[][] matrix) { for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } } ``` 希望能帮到你!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值