我对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]
矩阵。您介意阐明一些想法吗?
最佳答案
我建议您基于ComplexMatrix
接口创建自己的RealMatrix
接口,然后基于Array2DRowComplexMatrix
类创建自己的Array2DRowRealMatrix
类。要创建类,只需download the source code,更改类名,将double data[][]
更改为Complex data[][]
,然后将所有引用更新为data
。
创建一个接受ComplexMatrix
的RealMatrix
构造函数,或者包括一个带有multiply
参数的RealMatrix
方法。
Commons应该具有所需的所有方法,您可能只需要稍微调整一下它们的参数/返回类型。