【问题标题】:Construct Matrix in Matrix Toolkit Java在 Matrix Toolkit Java 中构造矩阵
【发布时间】:2013-06-04 21:51:30
【问题描述】:

关于 Matrix Toolkit Java (MTJ),我有一个非常幼稚的问题:如何从 double[][] A 开始构建 Matrix B

因为在库中,Matrix 只是一个接口,而不是一个

编辑

所以,我认为拥有JAMA 和'MTJ' 会解决问题,因为在JAMA 中可以直接定义Matrix 对象,但它没有工作。

我的代码是这样的:

导入 java.util.Arrays; 导入 Jama.; 导入 no.uib.cipr.matrix.;

public class MainCalc extends TurbulentModel {

    public static void main(String[] args){
        //      TurbulentModel A = new TurbulentModel();
        //      A.numberOfPointsAlongX = 4096;
        //      A.numberOfPointsAlongY = 3;
        //      A.numberOfPointsAlongZ = 3;
        //      A.averageHubWindSpeed = 8;
        //      A.durationOfWindFile = 600;
        //      A.hubHeight = 90;
        //      A.turbulentSeedNumber = 1;
        //      A.volumeWidthAlongY = 150;
        //      A.volumeHeightAlongZ = 150; 
        //      float[] pointsYCoord = A.calcPointsYCoord();
        //      float[] pointsZCoord = A.calcPointsZCoord();
        double[][] rr = {{2, -1, 0},{-1, 2, -1},{0, -1, 2}};
        Matrix test = new Matrix(rr);
        LowerTriangPackMatrix test1 = new LowerTriangPackMatrix(test);

       System.exit(0);

    }
}

但它被解决为JAMAsMatrixconcept and MTJ'sMatrix`定义之间的明显冲突。

我该如何解决这个问题?

【问题讨论】:

  • 你能给我们看看 API Doc 吗?
  • 看这里JAMA API
  • 正如我所料:Matrix 类从JAMA 库下降。

标签: java mtj


【解决方案1】:

在 MTJ 中创建矩阵不需要 JAMA。事实上,正如你已经发现的那样,JAMA 会妨碍 MTJ。

在 MTJ 中创建矩阵对象的最简单方法是使用实​​现 Matrix 接口的 DenseMatrix 类。它的一个构造函数接受double[][] 并创建一个矩阵,其条目是输入数组中给出的那些。例如,

// create array of backing values for an n-by-n matrix
double[][] matValues = new double[n][n];
... // initialize values somehow

// create a matrix from the matValues array with deep-copy semantics
// the matrix A is independent of any changes to the matValues array and vis-versa
Matrix A = new DenseMatrix(matValues);

// create a matrix from the matValues array **without** deep-copy semantics
// the matrix B will reflect any changes made to the matValues array and vis-versa
Matrix B = new DenseMatrix(matValues, false);

还有其他可用的构造函数,但这两种形式似乎最符合您的需求。您应该咨询javadoc(请注意,这不适用于最新版本 1.01,但似乎很接近)以获取更多选项。

我假设您的矩阵需要密集存储。如果您有sparse matrix,那么您应该使用 MTJ 中的其他类来代替 DenseMatrix,例如 CompColMatrixSymmTridiagMatrix 类。您将使用哪些稀疏矩阵类取决于所表示的矩阵固有的稀疏类型。

但是,如果有疑问,密集存储方法将适用于所有可能的矩阵。使用稀疏矩阵的好处是速度和存储空间,但仅适用于适当稀疏的矩阵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多