예제 #1
0
 private void totalIterateOS(Matrix3DImpl data) {
   double[][][] matrix = data.getData();
   Matrix2DImpl totalsOS = (Matrix2DImpl) os.getControlConstants();
   for (int o = 0; o < dimensions[1]; o++)
     for (int s = 0; s < dimensions[2]; s++) {
       double totalOS = totalsOS.getElement(o, s);
       double totalF = 0;
       for (int f = 0; f < dimensions[0]; f++) totalF += matrix[f][o][s];
       if (!(totalF == 0 && totalOS == 0))
         if (totalF == 0)
           for (int f = 0; f < dimensions[0]; f++) matrix[f][o][s] = totalOS / dimensions[0];
         else
           for (int f = 0; f < dimensions[0]; f++)
             matrix[f][o][s] = (matrix[f][o][s] / totalF) * totalOS;
     }
 }
예제 #2
0
 private void proportionIterateFO(Matrix3DImpl data) {
   double[][][] matrix = data.getData();
   Matrix2DImpl proportionsFO = (Matrix2DImpl) fo.getControlConstants();
   for (int f = 0; f < dimensions[0]; f++)
     for (int o = 0; o < dimensions[1]; o++) {
       double proportionFO = proportionsFO.getElement(f, o);
       double totalOS = 0;
       for (int o2 = 0; o2 < dimensions[1]; o2++)
         for (int s = 0; s < dimensions[2]; s++) totalOS += matrix[f][o2][s];
       double totalS = 0;
       for (int s = 0; s < dimensions[2]; s++) totalS += matrix[f][o][s];
       if (!(totalS == 0 && totalOS * proportionFO == 0))
         if (totalS == 0)
           for (int s = 0; s < dimensions[2]; s++)
             matrix[f][o][s] = totalOS * proportionFO / dimensions[2];
         else
           for (int s = 0; s < dimensions[2]; s++)
             matrix[f][o][s] = (matrix[f][o][s] / totalS) * totalOS * proportionFO;
     }
 }