2013-06-30 2 views
1

Я пытаюсь использовать PCA для уменьшения размера, и я использую jama для помощи в использовании матрицы. , но у меня возникла проблема при получении собственного значения с помощью jama. например i hava 2 размер изображения 100x100, затем я создаю одиночную матрицу 2 изображения x (100x100). - 20.000 пикселей. и как получить уменьшение с собственным значением? это образец мой код:получить собственное значение pca с java

public static void main(String[] args) { 
    BufferedImage bi; 
    int[] rgb; 
    int R, G, B; 
    // int[] jum; 
    double[][] gray = new double[500][500] ; 
    String[] baris = new String[1000]; 
    try { 
     //bi = ImageIO.read(new File("D:\\c.jpg")); 
     int[][] pixelData = new int[bi.getHeight() * bi.getWidth()][3]; 

     int counter = 0; 
     for (int i = 0; i < bi.getHeight(); i++) { 
      for (int j = 0; j < bi.getWidth(); j++) { 
       gray[i][j] = getPixelData(bi, i, j); 
       // R = getR(bi, i, j); 
       //G = getG(bi, i, j); 
       //B = getB(bi, i, j); 
       //jum = R + G + B; 
       // gray[counter] = Double.toString(R + G + B/3); 
       // System.out.println("Gray " +gray); 
       //for (int k = 0; k < rgb.length; k++) { 
       // pixelData[counter][k] = rgb[k]; 
       // } 

       counter++; 
      } 
     } 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Matrix matrix = new Matrix(gray); 
    PCA pca = new PCA(matrix); 
    pca.getEigenvalue(6); 
    String n = pca.toString(); 
    System.err.println("nilai n "+n); 
    //double dete = pcadete(matrix,3600); 
} 

private static int getPixelData(BufferedImage bi, int x, int y) { 
    int argb = bi.getRGB(y, x); 
    int r, g, b; 
    int gray; 
    int rgb[] = new int[]{ 
     (argb >> 16) & 0xff, //red 
     (argb >> 8) & 0xff, //green 
     (argb) & 0xff //blue 
    }; 
    r = rgb[0]; 
    g = rgb[1]; 
    b = rgb[2]; 

    gray = (r + g + b)/3; 
    System.out.println("gray: " + gray); 
    return gray; 
} 

когда я показать собственное в этом коде:

PCA pca = new PCA(matrix); 
    pca.getEigenvalue(6); 
    String n = pca.toString(); 
    System.err.println("nilai n "+n); 

Результат является:

Nilai п PCA @ c3e9e9

Может , и скажите мне, как получить значение собственной величины и сокращения.

ответ

1

Вы видите выход объекта, потому что, кажется, нет никакого toString имплантации в классе PCA, чтобы напечатать его красивым способом.

Если у вас есть класс PCA, вы можете переопределить метод toString для его печати так, как вы хотите. Если вы используете eclipse, вы можете сгенерировать этот метод, щелкнув правой кнопкой мыши по классу PCA-> Source-> Generate toStirng.

Или иначе попытаться напечатать его с помощью методов получения, таких как:

System.err.println("nilai n "+ n.getEigenvalue());. 

Btw обмена вашего класса PCA поможет больше.

 Смежные вопросы

  • Нет связанных вопросов^_^