5 votos

El cálculo de la FFT para sólo una parte del rango de frecuencia completo?

Antes he hecho una pregunta aquí sobre la realización de la FFT en frecuencias más bajas, pero aún en el muestreo altas frecuencias. Yo estaba bajo la impresión de que la FFT era inherentemente calculado a cada frecuencia 0->(Frecuencia de Muestreo)/2 distribuidos en bandejas de ancho Fs/(2*N). Pero, mirando algunas de las respuestas que he recibido, parece que es posible que el Fs es sólo útil en la determinación de la frecuencia máxima, que es Fs/2, pero que es totalmente posible, dicen, de la muestra de 640 Hz, pero sólo muestra las frecuencias de 0-64 Hz.

Sin embargo, a partir de lo que he leído hasta ahora sobre la FFT de las implementaciones, parece que la FFT en los ejemplos que estoy viendo, es que se realiza en todo el rango de 0->Fs/2, así que no estoy del todo seguro de cómo ir sobre la realización de la FFT en sólo una porción de la frecuencia máxima.

Ahora, acaba de adelantarse a esto, me doy cuenta de que en algún lugar a lo largo de la línea hay una alta probabilidad de algún tipo de malentendido por mi parte. No estoy totalmente seguro de lo que me estoy perdiendo, pero por eso puse mi comprensión actual aquí y tal vez alguien puede explicar adecuadamente por qué estoy percibiendo que la FFT es sólo que se realiza en una parte de la gama, que tengo la sospecha, debido a la contradicción arriba indicados, es sólo una interpretación incorrecta por mí. O tal vez sobremuestreo requiere de algún tipo de lógica distinta a la que estaba inconsciente. En cualquier caso, yo me quedo un poco confundido por lo que cualquier ayuda es muy apreciada.

6voto

RWH Puntos 21

Yo estaba bajo la impresión de que la FFT era inherentemente calculado a cada frecuencia 0->(Frecuencia de Muestreo)/2 distribuidos en bandejas de ancho Fs/(2*N).

Esto es más o menos correcto. Una transformada de fourier discreta (DFT) produce una salida para frecuencias de entre \$-F_s/2\$\$F_s/2\$. Si los datos de entrada es un valor real (en lugar de complejos) la negativa de frecuencias del espectro radioeléctrico será sólo el conjugado complejo de la positivo-espectro de frecuencias, por lo que algunas vez puede ser salvado por no calcular la frecuencia negativas bin valores.

El espaciado de las tolvas es \$F_s/N\$, no \$F_s/(2N)\$.

No estoy del todo seguro de cómo ir sobre la realización de la FFT en sólo una porción de la frecuencia máxima.

Para calcular un pequeño número de contenedores, no es un método que se llama el algoritmo de Goertzel para el cálculo de una bandeja a la vez.

Como regla general, suele ser más eficaz para calcular \$M\$ papeleras de una DFT por el algoritmo de Goertzel

$$M \le \frac{5 N_2}{6 N} \log_2(N_2)$$

donde \$N_2\$ es la siguiente potencia de dos superior \$N\$.

4voto

Scottm Puntos 1114

Tienes razón en que la FFT se calcula equidistante de la frecuencia de muestras a lo largo de todo el rango de frecuencia. Aparte de que el algoritmo de Goertzel mencionados en Los Fotones de la respuesta, también se podría utilizar el Chirrido de Z-transformar, lo que le permite hacer zoom en un determinado rango de frecuencia. Este documento explica el algoritmo y también contiene una implementación en Matlab (que también se incluye en Matlab de la señal del procesamiento de la caja de herramientas ( czt.m).

También eche un vistazo a esta respuesta.

2voto

GSerg Puntos 33571

La DFT (discrete Fourier transform) es un proceso que toma N muestras de datos en el dominio del tiempo y produce N muestras de datos en el dominio de la frecuencia. Se requiere en el orden de N2 operaciones (esto se escribe como "O(N2)") para completar el cálculo completo. Cada uno de los N valores de salida se calcula de forma independiente, y cada uno toma O(N) operaciones para calcular.

La FFT (fast Fourier transform) es una implementación de la DFT, que elimina la gran cantidad de redundancia en la normal burte-la fuerza de la DFT de cálculo, reduciendo el número de operaciones que requiere O(N log2N). Sin embargo, la salida de N resultados son calculadas "en paralelo", y no hay ninguna manera fácil de calcular que sólo algunos de ellos sin hacer todas las operaciones.

Por lo tanto, si usted sólo necesita un subconjunto de los N resultados, puede ser más eficiente para utilizar el original de la DFT de cálculo. Especialmente si usted sólo necesita de registro2 N de ellos (o menos). Pero si usted necesita más de ellos, entonces usted todavía salir adelante haciendo el pleno de la FFT y arrojando los resultados que usted no necesita.

El algoritmo de Goertzel es una forma diferente de calcular un resultado único de una DFT. Convierte el no recursivo, la fórmula en un recursiva uno, lo que reduce enormemente la cantidad de almacenamiento intermedio necesario. Esta es la razón por la que es muy popular en aplicaciones tales como la decodificación DTMF, en la que sólo se necesita medir los niveles relativos de 8 diferentes frecuencias específicas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X