我正在尝试使用Java中MATLAB中可用的重塑功能. Java中是否有重构的实现?
解决方法:
我在sun forums上找到了这个(修改了一下).
public class Test {
public static void main(String[] args) {
double[][] ori = new double[][] { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
double[][] res = reshape(ori,2,6);
for(int i = 0;i
for(int j = 0;j
System.out.print(ori[i][j]+" ");
}
System.out.println("");
}
System.out.println("");
for(int i = 0;i
for(int j = 0;j
System.out.print(res[i][j]+" ");
}
System.out.println("");
}
}
public static double[][] reshape(double[][] A, int m, int n) {
int origM = A.length;
int origN = A[0].length;
if(origM*origN != m*n){
throw new IllegalArgumentException("New matrix must be of same area as matix A");
}
double[][] B = new double[m][n];
double[] A1D = new double[A.length * A[0].length];
int index = 0;
for(int i = 0;i
for(int j = 0;j
A1D[index++] = A[i][j];
}
}
index = 0;
for(int i = 0;i
for(int j = 0;j
B[j][i] = A1D[index++];
}
}
return B;
}
}
测试输出是
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
10.0 11.0 12.0
1.0 3.0 5.0 7.0 9.0 11.0
2.0 4.0 6.0 8.0 10.0 12.0
标签:java,matlab,reshape
来源: https://codeday.me/bug/20190701/1342704.html