0

我对 Java 很陌生,我面临一个问题,我相信它可以很容易地掌握。

我正在生成一个链接到Apache - Commons Math库的项目。

在项目中,我使用了很多RealMatrix对象。我有一个方法如下

public static RealMatrix DistCalc(RealMatrix YCoord, RealMatrix ZCoord){
        RealMatrix Distance = new Array2DRowRealMatrix(YCoord.getRowDimension(),ZCoord.getRowDimension());
        for(int ii = 0; ii < YCoord.getRowDimension(); ii++){
            for(int jj = 0; jj < ZCoord.getRowDimension(); jj++){
                Distance.setEntry(ii,jj,Math.sqrt((YCoord.getEntry(ii, 0) - YCoord.getEntry(jj, 0))*(YCoord.getEntry(ii, 0) - YCoord.getEntry(jj, 0)) + (ZCoord.getEntry(jj, 0) - ZCoord.getEntry(ii, 0))*(ZCoord.getEntry(jj, 0) - ZCoord.getEntry(ii, 0))));
            }
        }        
        return Distance;
    }

另一个生成某个Complex矩阵,

// Define the random phase for the u- component
    public static Complex[][] RandPhi(int N, int nFFT){
        Complex[][] nn_u = new Complex[N][nFFT];        
        for(int ii = 0; ii < N; ii++){
            for(int jj = 0; jj < nFFT; jj++){
                nn_u[ii][jj] = new Complex(Math.cos(new Random().nextDouble()*2*Math.PI),Math.sin(new Random().nextDouble()*2*Math.PI));
            }
        }
        return nn_u;
    }

现在,我想按列将RealMatrix 距离Complex矩阵nn_u 相乘:最后我应该想出一个Complex[N][nFFT]矩阵。

你介意解释一下吗?

4

1 回答 1

1

我建议您基于接口创建自己ComplexMatrixRealMatrix接口,然后Array2DRowComplexMatrix基于该类创建自己的Array2DRowRealMatrix类。要创建类,只需下载源代码,更改类名,更改double data[][]Complex data[][],然后将所有引用更新为data.

要么创建一个ComplexMatrix接受 a 的构造函数,RealMatrix要么包含一个multiplyRealMatrix参数的方法。

Commons 应该有你需要的所有方法,你可能只需要稍微调整它们的参数/返回类型。

于 2013-05-23T13:46:19.557 回答