Exemplo n.º 1
0
  public static double Mahalanobis(double[] data, WormGene g) {
    // Compute Mahalanobis distance from worm gene data

    assert data.length == g.dim;
    int dim = g.dim;

    Vector<double[]> eigvec = DataConverter.mat2Jvector(g.eigenvectors);
    double[] eigval = DataConverter.colMat2Double(g.eigenvalues);

    for (int i = 0; i < dim; i++) eigval[i] += Configs.MDIS_EPSILON;

    for (int i = 0; i < dim; i++) assert eigval[i] != 0;

    RealVector v1 = MatrixUtils.createRealVector(data);
    RealVector[] vec = new RealVector[dim];
    for (int i = 0; i < dim; i++) {
      vec[i] = MatrixUtils.createRealVector(eigvec.elementAt(i));
    }
    double[] d = new double[dim];
    for (int i = 0; i < dim; i++) {
      d[i] = v1.dotProduct(vec[i]) / Math.sqrt(eigval[i]);
    }

    RealVector dis = MatrixUtils.createRealVector(d);

    return vectorLength(dis);
  }
Exemplo n.º 2
0
  public static void M2V() {

    Mat data =
        new Mat(3, 4, CvType.CV_32F) {
          {
            put(0, 0, 1, 2, 2, 4);
            put(1, 0, 2, 4, 4, 8);
            put(2, 0, 3, 6, 6, 12);
          }
        };

    Vector<double[]> v = DataConverter.mat2Jvector(data);
    //		VecOperation.printVectorArray(v);

  }