Объект RealMatrix в классе Java - PullRequest
0 голосов
/ 18 февраля 2012

Кажется, что я не могу использовать эту библиотеку Apache Commons Math в своем классе, потому что я получаю неожиданный токен на matrixSim, когда пытаюсь использовать RealMatrix в моем конструкторе, например так:

class vecGenUn
{
  double[][] prevMat;
  RealMatrix matrixSim;  //this is problematic
  int dataDim;
  int rowDim;
  double simVecMean;
  double simVecSD;
  double simVecUn;
  double sum;

  vecGenUn (double[][] tempPM)
  {
    prevMat = tempSM;
    matrixSim = new Array2DRowRealMatrix(prevMat);  //and possibly this
    dataDim = new int matrixSim.getColumnDimension();
    rowDim = new int matrixSim.getRowDimension();
    simVecMean = new double[dataDim];
    simVecSD = new double[dataDim];
    simVecUn = new double[dataDim];
    sum = new Sum();
  }

  public void vecGen()
  {
    for (int i = 0; i < dataDim; i++)
    {
      simVecMean[i] = sum.evaluate(matrixSim.getColumn(i), 0, rowDim)/rowDim
    }
  }
}

Теперь методы еще не реализованы, но как мне использовать тип данных RealMatrix здесь, когда он мне нужен для всех методов математической библиотеки Appache, но мне также нужно создать его из значений (двойной массив), предоставленных при создании этого экземпляра класса.

1 Ответ

1 голос
/ 18 февраля 2012

В предоставленном коде у вас есть всевозможные ошибки компилятора, не связанные с Apache Commons Math. Исправьте их, прежде чем пытаться определить, есть ли у вас проблемы с этой библиотекой.

Комментарии исправления в строке отмечены (*):

class vecGenUn
{
  double[][] prevMat;
  RealMatrix matrixSim;  //this is problematic
  int dataDim;
  int rowDim;
  double simVecMean;
  double simVecSD;
  double simVecUn;
  double sum;

  vecGenUn (double[][] tempPM)
  {
    prevMat = tempSM; // (*) tempSM is undefined
    matrixSim = new Array2DRowRealMatrix(prevMat);  //and possibly this
    dataDim = new int matrixSim.getColumnDimension(); // (*) 'new int' is invalid
    rowDim = new int matrixSim.getRowDimension(); // (*) ditto
    simVecMean = new double[dataDim]; // (*) assigning an array to a scalar variable
    simVecSD = new double[dataDim]; // (*) ditto
    simVecUn = new double[dataDim]; // (*) ditto
    sum = new Sum(); // (*) assigning object to primitive
  }

  public void vecGen()
  {
    for (int i = 0; i < dataDim; i++)
    {
      simVecMean[i] = sum.evaluate(matrixSim.getColumn(i), 0, rowDim)/rowDim // (*) indexing a scalar variable
    }
  }
}
...