用java函数转置双[][]矩阵?
有没有人有一个函数,我可以用它在Java中转置矩阵,其形式如下:用java函数转置双[][]矩阵?,java,matrix,Java,Matrix,有没有人有一个函数,我可以用它在Java中转置矩阵,其形式如下: double[][] 我有这样的功能: 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];
double[][]
我有这样的功能:
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;
}
publicstaticdouble[]transpossematrix(double[]m){
对于(int i=0;i
但在某些地方它是错误的。公共静态双[][]转置矩阵(双[]]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;
}
双精度[][]温度=新双精度[m[0]。长度][m.length];
对于(int i=0;i
转置矩阵的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();
}
}
}
import java.util.Scanner;
公共类转置{
/**
*@param args
*/
静态整数列;
静态int行;
静态int[]trans_arr=新int[col][row];
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪sc=新的扫描仪(System.in);
int m=sc.nextInt();
col=m;
int n=sc.nextInt();
行=n;
int[]arr=新的int[行][col];
对于(int i=0;i|
如果您想使用外部库,Apache Commons Math提供了转置矩阵的实用程序。请参考它
首先,您必须创建一个双数组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;
}
publicstaticdouble[][]转置(double-arr[]]{
int m=阵列长度;
int n=arr[0]。长度;
双重ret[][]=新的双重[n][m];
for(int i=0;i
这是一个小小的变化
for (int j = i; j < m[0].length; j++)
for(int j=i;j
自Java 8以来,您可以执行以下操作:
public static double[][] transposeMatrix(final double[][] matrix) {
return IntStream.range(0, matrix[0].length)
.mapToObj(i -> Stream.of(matrix).mapToDouble(row -> row[i]).toArray())
.toArray(double[][]::new);
}
尝试然后询问(int j=i+1;…=>
for(int j=0;…)
-您也不需要返回m,调用方已经有了对它的引用。@Pshemo这一个关闭得有点太快了,似乎…@assylias是的,它是在OP发布他的尝试之前关闭的。之后我投票重新打开它。@gurehbgui您想做什么?如果您试图更改“square”中元素的位置如果你想把非方矩阵{1,2,3},{4,5,6}转换成{1,4},{2,5},{3,6},你必须创建并返回一个新的数组,因为你不能在已经存在的数组中添加/删除行。你不应该检查m[0]
不会导致IndexOutOfBoundsException
?您好,我看到您是网站的新贡献者,请您解释一下,这不仅仅是一行代码。谢谢!