ここ数週間、私は任意のバイトのセットを受け取り、それらをシグナルとして扱うDFTを実装しようとしています。次に、それらを周波数領域に変換します。その後、それはそれらを元に戻します。元々は、元の信号を再構築するために一部のコンポーネントを使用しようとしただけでした。これが失敗したとき、私はすべてのコンポーネントを使用しようとしましたが、それでも失敗しました。
私はこれを行う方法のガイドとしてウィキペディアの方程式に従ってきました、そして私のコードはこのコードを与えられた(私の心の中で)与えられた方程式と一致するようです:
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]));
}
誰かが私が問題が何であるかを特定するのを手伝ってもらえますか?
同じプロジェクトについての前の質問をしましたが、それはひどい言い回しであり、編集はより多くの混乱を引き起こしたかもしれません。また、その質問は答えられたかもしれませんが、私はまだ理解する必要があります。それはここで見つけることができます