Java 实矩阵与复矩阵相乘
我对Java非常陌生,我面临着一个问题,我相信它很容易掌握 我正在生成一个与Apache-Commons数学库链接的项目 在项目中,我使用了相当多的Java 实矩阵与复矩阵相乘,java,eclipse,apache-commons,Java,Eclipse,Apache Commons,我对Java非常陌生,我面临着一个问题,我相信它很容易掌握 我正在生成一个与Apache-Commons数学库链接的项目 在项目中,我使用了相当多的RealMatrix对象。我有一个工作方法如下 public static RealMatrix DistCalc(RealMatrix YCoord, RealMatrix ZCoord){ RealMatrix Distance = new Array2DRowRealMatrix(YCoord.getRowDimension()
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;
}
现在,我想将RealMatrix
距离乘以复数矩阵nn\u:最后我应该得到一个复数[N][nFFT]
矩阵
您介意解释一下吗?我建议您基于RealMatrix
接口创建自己的ComplexMatrix
接口,然后基于array2droraralMatrix
类创建自己的Array2DRowComplexMatrix
类。要创建类,只需更改类名,将double data[][]]
更改为Complex data[]][]
,然后更新对数据的所有引用
创建一个接受RealMatrix
的ComplexMatrix
构造函数,或者包含一个带有RealMatrix
参数的multiply
方法
Commons应该有您需要的所有方法,您可能只需要稍微调整一下它们的参数/返回类型。如果我切换回Java primitivedouble[][]
类型而不是RealMatrix
,会更容易吗?我目前正在使用RealMatrix
,因为代码结果更干净,我不必重新发明轮子。顺便说一句,我会尝试一下你的建议。这是你的要求,你真正需要的是一个乘法方法,它接受一个Complex[][]
和一个double[][][]
,它可以是一个ComplexMatrix
类的实例方法,也可以是一个带有(Complex[][]],double[]][])
参数的静态方法。无论哪种方式,下载数学源代码,并将乘法方法基于Array2DRowComplexMatrix
类中的方法-该方法是您不希望自己重新实现的部分。
// 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;
}