我已经进行过实验,但我找不到一种方法来解析一个整数数组和一个双精度矩阵到一个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[][] coordinates
和int[] data
的全部内容分别解析为la4j matrice和vector。
我也尝试将这些解析为CSV文件,但科学记法(由于我coordinates
矩阵中的数字非常大)我无法正确解析它。
任何提示和想法?
答案 0 :(得分:1)
这是事情。首先,只需调用构造函数0x0
即可创建new Basic2DMatrix()
矩阵。其次,matrix.add
是不插入矩阵的加法运算(如矩阵加上其他矩阵,或者矩阵加值)。调用matrix.add(value)
会为所有单元格添加给定值。在你的情况下,矩阵中没有单元格=没有任何事情发生。您需要做的就是调用构造函数并在那里传递coordinates
数组。
Matrix a = new Basic2DMatrix(coordinates); // easy-peasy
您还可以使用get
/ set
等公共访问方法手动设置每个元素。