首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印带有表格格式的RealMatrix

如何打印带有表格格式的RealMatrix
EN

Stack Overflow用户
提问于 2018-04-03 08:49:34
回答 2查看 848关注 0票数 6

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

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

代码语言:javascript
复制
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");
        }

输出:

代码语言:javascript
复制
    coordinates  [nó, x, y]
   1,00000     0,00000     0,00000  
   2,00000     1,00000     1,00000  
   3,00000     2,00000     0,00000

但当我使用RealMatrix打印时,它只打印字符串(就我自己所能找到的而言),如下所示:

代码语言:javascript
复制
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());

输出:

代码语言:javascript
复制
Array2DRowRealMatrix{{1.0,0.0,0.0},{2.0,1.0,1.0},{3.0,2.0,0.0}}

如何使用RealMatrix获得与第一种情况相同的输出?从我尝试自己做这件事时得到的错误信息来看,似乎如果我可以将realmatrix转换回一个数组,就可以解决我的问题,但我也不能做到这一点……

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

编辑2:添加了Java标签

EN

回答 2

Stack Overflow用户

发布于 2020-08-16 22:24:56

Apache的commons-math有一个将矩阵格式化为字符串的工具,它是用RealMatrixFormat编写的。下面是一个简单的示例,它将生成一个类似于output的表:

代码语言:javascript
复制
import org.apache.commons.math3.linear.MatrixUtils;
import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.linear.RealMatrixFormat;

public class Main {
    public static void main(String[] args) {


        double data[][] = new double[2][3];
        data[0][0] = 11;
        data[0][1] = 12;
        data[0][2] = 13;

        data[1][0] = 21;
        data[1][1] = 22;
        data[1][2] = 23;

        RealMatrix matrix = MatrixUtils.createRealMatrix(data);

        RealMatrixFormat matrixFormat = new RealMatrixFormat("", "", "", "\n", "", ", ");
        System.out.println(matrixFormat.format(matrix));
    }
}

产生:

代码语言:javascript
复制
11, 12, 13
21, 22, 23
票数 2
EN

Stack Overflow用户

发布于 2018-05-08 08:34:23

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49620689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档