FFT
Publicado por patricia (3 intervenciones) el 24/03/2011 11:06:06
Hola, tengo una señal que es un sonido con extensión .wav y me gustaría poder obtener su FFT.
¿alguien podría ayudarme?
¿alguien podría ayudarme?
Valora esta pregunta
0
#include <fftw3.h>
#include <iostream>
#include <fstream>
#include "WAVFile.h"
// ...
WAVFile wavFile;
if (!wavFile.read("tu_archivo.wav")) {
std::cerr << "Error al leer el archivo WAV.\n";
return -1;
}
fftw_complex* in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * wavFile.getNumSamples());
fftw_complex* out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * wavFile.getNumSamples());
for (int i = 0; i < wavFile.getNumSamples(); ++i) {
in[i][0] = static_cast<double>(wavFile.getSample(i));
in[i][1] = 0.0;
}
fftw_plan plan = fftw_plan_dft_1d(wavFile.getNumSamples(), in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(plan);
fftw_destroy_plan(plan);
for (int i = 0; i < wavFile.getNumSamples(); ++i) {
std::cout << "FFT[" << i << "] = " << out[i][0] << " + " << out[i][1] << "i\n";
}
fftw_free(in);
fftw_free(out);