幾個星期以來,我一直在試圖實現一個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
可能的重複[如何將一組離散的數據轉移到頻域並返回(最好是無損地)](http://stackoverflow.com/questions/6876159/how-can-i-transfer-a-離散數據到頻率域和後退前) –
在我看來,第一個問題實際上更清晰,無論哪種方式,如果您對問題的措辭不滿意,然後編輯,不要重複。 –
請考慮在[DSP.SE](dsp.stackexchange.com)上詢問這些問題! :-) –