几个星期以来,我一直在尝试实现一个 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]);
}
身份证:
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]));
}
任何人都可以帮我确定问题所在吗?
我之前问过一个关于同一个项目的问题,但措辞很糟糕,编辑可能会造成更多的混乱,而不是更少。此外,虽然这个问题可能已经得到解答,但我还有更多需要弄清楚。可以在这里找到