使用java函数转置double 矩阵?

任何人都有一个函数,我可以用Java转置Matrix,其forms如下:

double[][] 

我有这样的function:

 public static double[][] transposeMatrix(double [][] m){ for (int i = 0; i < m.length; i++) { for (int j = i+1; j < m[0].length; j++) { double temp = m[i][j]; m[i][j] = m[j][i]; m[j][i] = temp; } } return m; } 

但它在某处错了。

  public static double[][] transposeMatrix(double [][] m){ double[][] temp = new double[m[0].length][m.length]; for (int i = 0; i < m.length; i++) for (int j = 0; j < m[0].length; j++) temp[j][i] = m[i][j]; return temp; } 

用于转置矩阵的Java类: –

 import java.util.Scanner; public class Transpose { /** * @param args */ static int col; static int row; static int[][] trans_arr = new int[col][row]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int m = sc.nextInt(); col = m; int n = sc.nextInt(); row = n; int[][] arr = new int[row][col]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { arr[i][j] = sc.nextInt(); System.out.print(arr[i][j] + " "); } System.out.println(); } int[][] trans_arr = new int[col][row]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { trans_arr[j][i] = arr[i][j]; } } for (int i = 0; i < col; i++) { for (int j = 0; j < row; j++) { System.out.print(trans_arr[i][j] + " "); } System.out.println(); } } } 

如果您想使用外部库,Apache Commons Math提供了转置矩阵的实用程序。 请参考它的官方网站 。

首先,您必须创建一个double数组double[][] arr ,就像您已经完成的那样。 然后,可以像这样实现转置的2d矩阵

 MatrixUtils.createRealMatrix(arr).transpose().getData() 

这是方法

 public static double[][] transpose(double arr[][]){ int m = arr.length; int n = arr[0].length; double ret[][] = new double[n][m]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { ret[j][i] = arr[i][j]; } } return ret; } 

这是一个小改变!

 for (int j = i; j < m[0].length; j++)