2
我正在为Java中的CSE类做一个分配,并正在实施FFT和直接DFT(使用矩阵计算)。我的FFT工作正常,但我的直接DFT不起作用。我的傅立叶矩阵不会出现正确的值,我想知道它是否出现用户错误,或者问题出在我正在使用的Complex类(org.apache.commons.math.complex)上。有了这样一个主流的课堂,我想它只是用户的错误,所以如果有人能指出,那会很好。在Java中使用离散傅里叶变换(不是FFT)
我的傅立叶矩阵计算的工作原理如下:
Complex[][] fmatrix = new Complex[cvector.length][cvector.length]; // Initialize Matrix
for(int k = 0; k < n; k++) {
double val = -2.0 * k * Math.PI/n; // Calculate exponential value
Complex w = new Complex(0.0,val); // Store that in a Complex value and set imaginary piece to the exponential value
for (int l = 0; l < n; l++) {
Complex powerof = new Complex((double) (k*l),0.0); // Calculate the power to take it to
fmatrix[k][l] = w.exp().pow(powerof); // Take the exponent, then raise it to powerof
}
}
我有一些项目拉出到变量进行调试,但代码应该从我的理解所有的工作。
上面的代码,对于n = 4的长度矢量,但是,想出了下面的矩阵:
Mine Desired
[ 1, 1, 1, 1 [ 1, 1, 1, 1
1, -j, -1, j 1, -j, -1, j
1, 1, 1, 1 =/= 1, -1, 1, -1
1, -j, -1, j ] 1, j, -1, -j ]
任何帮助不胜感激。
就是这样。非常感谢你。我只是混合了我的FFT和DFT方程。 – Ktash 2011-03-04 17:51:16