我对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]
矩阵。
答案 0 :(得分:1)
我建议您根据ComplexMatrix
界面创建自己的RealMatrix
界面,然后根据Array2DRowComplexMatrix
类创建自己的Array2DRowRealMatrix
类。要创建课程,只需download the source code,更改课程名称,将double data[][]
更改为Complex data[][]
,然后更新对data
的所有引用。
创建接受ComplexMatrix
的{{1}}构造函数,或者使用RealMatrix
参数包含multiply
方法。
Commons应该拥有你需要的所有方法,你可能只需稍微调整它们的参数/返回类型。