获取java中传入矩阵的总和

时间:2013-11-08 04:59:45

标签: java matrix

我得到一个包含大量矩阵的文件。我需要将它总结为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

任何建议。

1 个答案:

答案 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()  ));