Tengo un resultado FFT. Estos se almacenan en dos doublematrices: una matriz de parte real y una matriz de parte imaginaria. ¿Cómo determino las frecuencias que corresponden a cada elemento en estas matrices?
En otras palabras, me gustaría crear una matriz que almacene las frecuencias para cada componente real e imaginario de mi FFT.
c#
signal-processing
fft
Rango
fuente
fuente

Respuestas:
El primer contenedor en el FFT es DC (0 Hz), el segundo contenedor es
Fs / N, dondeFsestá la frecuencia de muestreo yNes el tamaño del FFT. El siguiente contenedor es2 * Fs / N. Para expresar esto en términos generales, el enésimo bin esn * Fs / N.Entonces, si su frecuencia de muestreo,
Fses decir 44.1 kHz y su tamaño FFT,Nes 1024, entonces los contenedores de salida FFT están en:Tenga en cuenta que para una señal de entrada real (partes imaginarias todas cero), la segunda mitad de la FFT (contenedores desde
N / 2 + 1hastaN - 1) no contiene información adicional útil (tienen una simetría conjugada compleja con los primerosN / 2 - 1contenedores). El último bin útil (para aplicaciones prácticas) está enN / 2 - 1, que corresponde a 22006.9 Hz en el ejemplo anterior. El bin enN / 2representa la energía en la frecuencia de Nyquist, es decirFs / 2(= 22050 Hz en este ejemplo), pero en general no tiene ningún uso práctico, ya que los filtros anti-aliasing normalmente atenuarán cualquier señal en y por encimaFs / 2.fuente
Mira mi respuesta aquí .
Respuesta para comentar:
La FFT en realidad calcula la correlación cruzada de la señal de entrada con funciones seno y coseno (funciones básicas) en un rango de frecuencias igualmente espaciadas. Para una salida FFT dada, hay una frecuencia correspondiente (F) dada por la respuesta que publiqué. La parte real de la muestra de salida es la correlación cruzada de la señal de entrada con
cos(2*pi*F*t)y la parte imaginaria es la correlación cruzada de la señal de entrada consin(2*pi*F*t). La razón por la cual la señal de entrada está correlacionadasinycosfunciona es para tener en cuenta las diferencias de fase entre la señal de entrada y las funciones básicas.Al tomar la magnitud de la salida FFT compleja, obtiene una medida de qué tan bien se correlaciona la señal de entrada con las sinusoides en un conjunto de frecuencias, independientemente de la fase de la señal de entrada. Si solo está analizando el contenido de frecuencia de una señal, casi siempre tomará la magnitud o magnitud al cuadrado de la salida compleja de la FFT.
fuente
He usado lo siguiente:
Las entradas son:
i: Bin para accedersamples: Frecuencia de muestreo en hercios (es decir, 8000 Hz, 44100 Hz, etc.)nFFT: Tamaño del vector FFTfuente
samplesonFFT. Así que por favor hazlo más explicativo.i * samples / nFFT. ¿Por qué está el extra2allí? ¿Me estoy perdiendo de algo?Los coeficientes de salida FFT (para entradas complejas de tamaño N) son de 0 a N - 1 agrupados como frecuencia [LOW, MID, HI, HI, MID, LOW].
Consideraría que el elemento en k tiene la misma frecuencia que el elemento en Nk ya que para datos reales, FFT [Nk] = conjugado complejo de FFT [k].
El orden de escaneo de BAJA a ALTA frecuencia es
Hay [N / 2] +1 grupos de frecuencia desde el índice i = 0 a [N / 2], cada uno con el
frequency = i * SamplingFrequency / NEntonces la frecuencia en el bin FFT [k] es:
fuente
La frecuencia de su k ésimo resultado FFT es 2 * pi * k / N.
fuente