如何使用表格格式打印 RealMatrix

Jow*_*ows 6 java arrays matrix apache-commons-math

我在我的项目中使用 apache-commons-math RealMatrix 来处理矩阵运算,但是我无法以正确的格式打印它。

到目前为止,对于我拥有的每个矩阵,它都是这样的:

double coord[][] = new double[3][3];
                    
        coord[0][0] = 1d;    
        coord[0][1] = 0d;    
        coord[0][2] = 0d;    

        coord[1][0] = 2d;    
        coord[1][1] = 1d;    
        coord[1][2] = 1d;    

        coord[2][0] = 3d;    
        coord[2][1] = 2d;    
        coord[2][2] = 0d;    
    
        
    System.out.println("coordinates  [nó, x, y]");
        for(int co = 0 ; co < 3 ; co++){
            for(int or = 0 ; or < 3 ; or++){
                System.out.printf("%10.5f\t",coord[co][or]);
            }
            System.out.print("\n");
        }
Run Code Online (Sandbox Code Playgroud)

输出:

    coordinates  [nó, x, y]
   1,00000     0,00000     0,00000  
   2,00000     1,00000     1,00000  
   3,00000     2,00000     0,00000
Run Code Online (Sandbox Code Playgroud)

但是当我使用 RealMatrix 进行打印时,它只以字符串形式打印(就我自己而言),如下所示:

double coord[][] = new double[3][3];
                            
            coord[0][0] = 1d;    
            coord[0][1] = 0d;    
            coord[0][2] = 0d;    

            coord[1][0] = 2d;    
            coord[1][1] = 1d;    
            coord[1][2] = 1d;    

            coord[2][0] = 3d;    
            coord[2][1] = 2d;    
            coord[2][2] = 0d;   
        
        
        RealMatrix m = MatrixUtils.createRealMatrix(coord);                  
        System.out.println(m.toString());
        
Run Code Online (Sandbox Code Playgroud)

输出:

Array2DRowRealMatrix{{1.0,0.0,0.0},{2.0,1.0,1.0},{3.0,2.0,0.0}}
Run Code Online (Sandbox Code Playgroud)

如何使用 RealMatrix 获得与第一种情况相同的输出?从我尝试自己完成时收到的错误消息来看,似乎如果我可以将实矩阵转换回数组,它将解决我的问题,但我也无法做到...

编辑 1:当我试图解决这个问题时,我发现在数组中获取矩阵运算的结果会非常有帮助,或者至少是一种从中读取特定值的方法。

编辑 2:添加了 Java 标签

小智 0

您可以使用 获取二维数组形式的基础数据getData。实现通常会从此方法返回数据的副本。一些实现公开了一个getDataRef方法,该方法返回对底层数据本身的引用。使用其中之一,您可以根据需要格式化数据。