【发布时间】:2011-08-21 22:12:48
【问题描述】:
几周以来,我一直在尝试实现一个 DFT,它采用任意字节集并将它们视为信号。然后将它们转换到频域。之后,它将它们转换回来。它最初只是尝试使用一些组件来重建原始信号。当这失败时,我尝试使用所有组件,但仍然失败。
我一直关注 Wikipedia's Equations 作为如何执行此操作的指南,并且我的代码似乎与给定此代码的(在我看来)给出的方程式相匹配:
DFT:
for (int k = 0; k < frequency_domain_magnitude.length; k++) {
for (int n = 0; n < data.length; n++) {
double val = (-2.0 * Math.PI * n * k / data.length);
freq_imag[k] += data[n] * -Math.sin(val);
freq_real[k] += data[n] * Math.cos(val);
}
frequency_domain_magnitude[k] = Math.sqrt(freq_imag[k] * freq_imag[k] + freq_real[k] * freq_real[k]);
}
IDFT:
for (int n = 0; n < data.length; n++) {
doubleValue[n] = 0;
for (int k = 0; k < freqUsed.length; k++) {
double val = (2.0 * Math.PI * n * k / data.length);
doubleValue[n] = freq_real[k] * Math.cos(val) - freq_imag[k] * Math.sin(val);
}
time_real[n] = (byte) (Math.floor(doubleValue[n]));
}
谁能帮我找出问题所在?
我之前问过一个关于同一个项目的问题,但措辞很糟糕,编辑可能会造成更多的混乱,而不是更少。此外,虽然这个问题可能已经得到解答,但我还有更多需要弄清楚。可以找到here
【问题讨论】:
-
在我看来,第一个问题实际上更清楚,无论哪种方式,如果您对问题的措辞不满意,请编辑,不要重复。
-
请考虑在Signal Processing(dsp.stackexchange.com) 上提出此类问题! :-)
标签: math signal-processing fft frequency-analysis dft