将一个矩阵和双精度数组解析为la4j对象

时间:2014-11-04 21:25:36

标签: java arrays matrix

我已经进行过实验,但我找不到一种方法来解析一个整数数组和一个双精度矩阵到一个la4j矩阵/向量对象。

public void fillData(int[][] data2D, int height, int width) throws IOException{
    int[] data = initializeData(height, width);
    double [][] coordinates = initializeDataCoordinates(height, width);
    Matrix a = new Basic2DMatrix();

    int index1d = 0;
    for(int row = 0; row < height; row++){
        for(int col = 0; col < width; col++){
            int y = col+1;
            int x = row+1;
            //System.out.println("Current X: " + x);
            //System.out.println("Current Y: " + y);
            double xPow = Math.pow(x, 2);
            double yPow = Math.pow(y, 2);

            coordinates[row][0] = xPow*yPow;
            coordinates[row][1] = x*yPow;
            coordinates[row][2] = yPow;
            coordinates[row][3] = xPow*y;
            coordinates[row][4] = x*y;
            coordinates[row][5] = y;
            coordinates[row][6] = xPow;
            coordinates[row][7] = x;
            coordinates[row][8] = 1;

            a.add((double)data2D[row][col]);

            data[index1d] = data2D[row][col];
            index1d++;
        }
    }
}

如您所见,我尝试使用la4j lib的add方法,但matrice保持为空。我的目标是将double[][] coordinatesint[] data的全部内容分别解析为la4j matrice和vector。

我也尝试将这些解析为CSV文件,但科学记法(由于我coordinates矩阵中的数字非常大)我无法正确解析它。

任何提示和想法?

1 个答案:

答案 0 :(得分:1)

这是事情。首先,只需调用构造函数0x0即可创建new Basic2DMatrix()矩阵。其次,matrix.add是不插入矩阵的加法运算(如矩阵加上其他矩阵,或者矩阵加值)。调用matrix.add(value)会为所有单元格添加给定值。在你的情况下,矩阵中没有单元格=没有任何事情发生。您需要做的就是调用构造函数并在那里传递coordinates数组。

Matrix a = new Basic2DMatrix(coordinates); // easy-peasy

您还可以使用get / set等公共访问方法手动设置每个元素。