我已经进行了实验,但找不到将整数数组和 double 矩阵解析为 la4j 矩阵/vector 对象的方法。
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 库的 add
方法,但矩阵仍为空。我的目标是将 double[][] 坐标和 int[] 数据的全部内容分别解析为 la4j 矩阵和 vector 。
我也尝试将它们解析为 CSV 文件,但科学记数法(由于我的坐标
矩阵中的数字非常大)我无法正确解析它。
有什么建议和想法吗?
最佳答案
事情是这样的。首先,只需调用构造函数 new Basic2DMatrix()
即可创建 0x0
矩阵。其次,matrix.add是加法运算,而不是插入到矩阵中(例如矩阵加其他矩阵,或者在您的情况下矩阵加值)。调用matrix.add(value)
将给定值添加到所有单元格。在你的情况下,你的矩阵中没有细胞=什么也没发生。您所需要做的就是调用构造函数并向其中传递坐标
数组。
Matrix a = new Basic2DMatrix(coordinates); // easy-peasy
您还可以使用 get
/set
等公共(public)访问方法来手动设置每个元素。
关于java - 将矩阵和 double 组解析为 la4j 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745332/