Skip to content
Snippets Groups Projects
Commit 99c94678 authored by Federico Lolli's avatar Federico Lolli
Browse files

[FFT] improved fftfreq

parent 386db12f
Branches vcm
No related tags found
No related merge requests found
......@@ -40,7 +40,6 @@ template <int N_size>
class FFT
{
public:
using VectorHF = Eigen::Vector<float, N_size / 2>;
using VectorF = Eigen::Vector<float, N_size>;
using VectorCF = Eigen::Vector<std::complex<float>, N_size>;
......@@ -90,18 +89,21 @@ public:
/**
* @brief Get the frequency used in the FFT
* (only the first half, useful for real input functions)
*
* @param sample_rate in Hertz
* @return Eigen::Vector<std::complex<float>, N_size>
*/
static const VectorHF fftfreq(float sample_rate)
static const VectorF fftfreq(float sample_rate)
{
VectorHF bins = VectorHF::Zero();
VectorF bins = VectorF::Zero();
for (int i = 0; i < N_size / 2; i++)
{
bins(i) = (float)i * sample_rate / (float)N_size;
}
for (int i = N_size / 2; i < N_size; i++)
{
bins(i) = (float)(i - N_size) * sample_rate / (float)N_size;
}
return bins;
}
......
......@@ -57,9 +57,9 @@ static const std::vector<float> INTENSITY{
static const std::vector<float> FREQUENCY{
0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0,
24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 31.0, 32.0, 33.0,
34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0,
46.0, 47.0, 48.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0,
56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0};
24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, -32.0, -31.0, -30.0, -29.0,
-28.0, -27.0, -26.0, -25.0, -24.0, -23.0, -22.0, -21.0, -20.0, -19.0, -18.0,
-17.0, -16.0, -15.0, -14.0, -13.0, -12.0, -11.0, -10.0, -9.0, -8.0, -7.0,
-6.0, -5.0, -4.0, -3.0, -2.0, -1.0};
} // namespace Boardcore
......@@ -44,7 +44,7 @@ int main()
Vector<std::complex<float>, SAMPLES> fft_result =
FFT<SAMPLES>::fft(signal_vector);
Vector<float, SAMPLES / 2> fft_freq = FFT<SAMPLES>::fftfreq(SAMPLE_RATE);
Vector<float, SAMPLES> fft_freq = FFT<SAMPLES>::fftfreq(SAMPLE_RATE);
for (int i = 0; i < fft_result.size() / 2; i++)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment