在Matrix Toolkit Java中构造Matrix

时间:2013-06-04 21:51:31

标签: java mtj

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

因为,在图书馆中,Matrix只是界面,而不是

修改

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

我的代码是:

import java.util.Arrays; 进口Jama。; import 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);

    }
}

但它已被解决为JAMA s矩阵concept and MTJ's Matrix`定义之间明显的冲突。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

在MTJ中创建矩阵对象的最简单方法是使用实​​现DenseMatrix接口的Matrix类。其构造函数之一接受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类。您将使用哪些稀疏矩阵类取决于所表示的矩阵固有的稀疏类型。

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