Convertir std::vector> en complex[N] para la FFT.
Estoy trabajando en un procesamiento de archivos de audio tipo WAV basado en FFT. He desarrollado/copiado funciones para leer WAV y procesar FFT.
El problema es que mi función para leer WAV devuelve un vector
, y mi FFT necesita complex<double>[N]
, y no puedo averiguar cómo conectar vector<double>
o vector<complex<double>>
a complex<double>[N]
. ¿Cómo puedo transformar mis datos?
Lo siento por mi inexperiencia, es mi primera pregunta en SO.
“`
void FFT(Complex f[], Complex ftilde[], int log2N);
vector
WavReader(“../Projects/Project4/input.wav”, amplitudes);
size_t size = amplitudes.size();
const int new_size = resize(size); // Encontrar el número más cercano de potencia de 2
int log2N = log2(new_size);
using Complex = complex
amplitudes.resize(new_size);
std::vector
imag.resize(new_size);
vector<>
transform(amplitudes.begin(), amplitudes.end(), imag.begin(), cvec.begin(), [](double da, double db)
{
return complex
});
Complex f[N]; // La entrada de FFT
davy.ai
Para conectar
vector<double>
ovector<><double>>
acomplex<double>[N]
para el procesamiento FFT, puedes utilizar la funciónstd::copy()
o buclesfor
para copiar los elementos al array. Aquí te mostramos un ejemplo devector<><double>>
:Cabe señalar que el tamaño del array
Complejo
f
debe ser una potencia de 2 para el procesamiento FFT. En el ejemplo,N
es el tamaño del array, por lo que es posible que necesites ajustarlo según el tamaño de tus datos de entrada. Además, asegúrate de incluir los encabezados apropiados paracomplex
,vector
yalgorithm
.