我得到一个包含大量矩阵的文件。我需要将它总结为1个矩阵。 我解析了字符串并将它们存储在一个数组中 传入的文件内容是
0.000 0.000 0.000
0.000 0.000 0.000
0.000 0.000 1.000
9.0 12.0 -3.0
12.0 16.0 -4.0
-3.0 -4.0 1.0
25.0 45.0 -5.0
45.0 81.0 -9.0
-5.0 -9.0 1.0
144.0 12.0 -12.0
12.0 1.0 -1.0
-12.0 -1.0 1.0
64.0 56.0 -8.0
56.0 49.0 -7.0
-8.0 -7.0 1.0
81.0 72.0 -9.0
72.0 64.0 -8.0
-9.0 -8.0 1.0
36.0 72.0 -6.0
72.0 144.0 -12.0
-6.0 -12.0 1.0
100.0 80.0 -10.0
80.0 64.0 -8.0
-10.0 -8.0 1.0
64.0 40.0 -8.0
40.0 25.0 -5.0
-8.0 -5.0 1.0
196.0 112.0 -14.0
112.0 64.0 -8.0
-14.0 -8.0 1.0
总结之后,我得到了
719.000 501.000 -75.000
501.000 508.000 -62.000
-75.000 -62.000 10.000
作为我的结果。
我试过这个。但没有得到所需的输出。我能够获得'A'
中所有已解析的值/*Parsed*/
double[][] A = new double[keymatrix.length][keymatrix[0].length];
for (int i = 0; i<keymatrix.length; i++) {
for (int j = 0; j<keymatrix[0].length; j++) {
A[i][j] = Double.valueOf(keymatrix[i][j]);
}
}
key = new double[A.length][A[0].length];
for(int sumi = 0;sumi<A.length;sumi++){
for(int sumj=0;sumj<A[0].length;sumj++){
key[sumi][sumj] += A[sumi][sumj];
}
}
}//end loop and key declared as static double [][] ke
System.out.println("final");
for(int diai=0;diai<key.length;diai++){
for(int diaj=0;diaj<key[0].length;diaj++){
System.out.print(key[diai][diaj]+"\t");
}
System.out.println("");
}
当我检查输出时,键正在打印ke值
与迭代一起输出
.
.
.
incoming matrix
64.0 40.0 -8.0
40.0 25.0 -5.0
-8.0 -5.0 1.0
final
64.0 40.0 -8.0
40.0 25.0 -5.0
-8.0 -5.0 1.0
incoming matrix
196.0 112.0 -14.0
112.0 64.0 -8.0
-14.0 -8.0 1.0
final
196.0 112.0 -14.0
112.0 64.0 -8.0
-14.0 -8.0 1.0
任何建议。
答案 0 :(得分:0)
在提供的代码中,您正在重建循环内的矩阵键。
你应该在循环之前构建它一次,然后添加它。致电
key = new double[A.length][A[0].length];
在循环内部,您每次都有效地重置其值。
还有两个建议:
1)我不明白Matrix A有什么意义你似乎在keymatrix中有你想要的值,那么为什么要复制到A然后键入?
2)定义一次int rows = keymatrix.length; int cols = keymatrix[0].length
矩阵的大小。然后到处使用这些值。它将使代码更容易理解。
如果你有一个函数返回从输入读取的下一个矩阵,或者如果没有新输入则返回null,你最终会得到这样的结果:
String[][] keyMatrix = read_matrix(); //reads the first matrix from input
int rows = keyMatrix.length;
int cols = keyMatrix[0].length;
double[][] sumMatrix= new double[rows][cols];
do {
for(int i = 0;i<rows;i++){
for(int j=0;j<cols;j++){
sumMatrix[i][j] += Double.valueOf(keyMatrix[i][j]);
}
}
} while (null != ( keyMatrix=read_matrix() ));