Aquí hay una sinusoide de frecuencia f = 236.4 Hz
(tiene 10 milisegundos de largo; tiene N=441
puntos a la frecuencia de muestreo fs=44100Hz
) y su DFT, sin relleno de cero :
La única conclusión que podemos dar al observar el DFT es: "La frecuencia es de aproximadamente 200Hz".
Aquí está la señal y su DFT, con un gran relleno de cero :
Ahora podemos dar una conclusión mucho más precisa : "Al observar cuidadosamente el máximo del espectro, puedo estimar la frecuencia de 236Hz" (amplié y encontré que el máximo está cerca de 236).
Mi pregunta es: ¿por qué decimos que "el relleno cero no aumenta la resolución" ? (He visto esta oración muy a menudo, luego dicen "solo agrega interpolación")
=> ¡Con mi ejemplo, el relleno cero me ayudó a encontrar la frecuencia correcta con una resolución más precisa!
Respuestas:
La resolución tiene una definición muy específica en este contexto. Se refiere a su capacidad para resolver dos tonos separados en frecuencias cercanas. Ha aumentado la frecuencia de muestreo de su estimación de espectro, pero no ha adquirido ninguna capacidad para discriminar entre dos tonos que podrían estar, por ejemplo, en 236 Hz y 237 Hz. En cambio, se "derretirán" en una sola gota, sin importar la cantidad de relleno cero que aplique.
La solución para aumentar la resolución es observar la señal durante un período de tiempo más largo, luego usar un DFT más grande. Esto dará como resultado lóbulos principales cuyo ancho es inversamente proporcional al tamaño de DFT, por lo que si observa durante el tiempo suficiente, puede resolver las frecuencias de tonos múltiples que están cerca uno del otro.
-
Para ver cómo se desarrolla esto, aquí hay una gráfica de la FFT ampliada de la adición de dos señales: su sinusoide original y una que difiere en frecuencia de 0 a 100 Hz.
Es solo hacia el final de la diferencia de 100Hz de la trama (aquí a la izquierda) que puede distinguir (resolver) los dos.
Código de Scilab para generar la trama a continuación.
fuente
x(n)
alargarme (con0
al final), mantengo lax(n)
longitud N, PERO el cambio está aquí: en lugar deDFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)
fork=0,1,...,N-1
, lo hagoDFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))
parak=0,1,...,10*N-1
... Esto es como agregar más bins (10 N
bins en lugar deN
bins de frecuencia) pero manteniendo el mismox(n)
de longitudN
. Ahora los contenedores serían 10hz, 20hz, ..., 100hz, 110hz, 120hz, ..... => ¿Es lo mismo que el relleno cero: no hay una resolución adicional real, sino solo interpolación?DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))
parak=0,1,...,10*N-1
y mantener la mismax(n)
longitudN
da el mismo resultado que el relleno cero: en realidad, no más resolución, sino solo interpolación?El término "resolución" tiene múltiples significados, lo que puede confundir a las personas que intentan comunicarse cuando usan dos significados diferentes.
En el sentido óptico, de poder resolver dos puntos cercanos claramente separados (o dos picos adyacentes en el espectro) en lugar de una gota borrosa, el relleno cero no ayudará. Este es el significado que más probablemente se usa cuando se indica que el relleno cero no aumenta la resolución.
Si el requisito de resolución de uno requiere una caída (por ejemplo, una reducción mínima de 3 dB) entre los picos espectrales, entonces la resolución será incluso más baja que el espaciado de bin FFT, por ejemplo, ni siquiera Fs / N, pero 2X a 3X eso, o más, dependiendo de la ventana utilizada. Un requisito más débil para la resolución podría ser solo el espaciado de frecuencia de los vectores de base ortogonales del DFT, por ejemplo, Fs / N.
En términos de puntos de trazado, sí, el relleno cero le dará más puntos para trazar, como en la resolución DPI (puntos de trazado por pulgada). Eso puede hacer que sea más fácil elegir extremos por el globo ocular. Sin embargo, son los mismos puntos que obtendría al hacer una interpolación de trazado de muy alta calidad (interpolación Sinc) sin ningún relleno de cero, por lo que realmente no agregan información que de otro modo no podría calcularse sin el relleno de cero.
En términos de seguimiento de tono, la interpolación parabólica o Sinc (interpolación entre contenedores de resultados FFT) de un resultado FFT con ventana sin relleno de ceros podría proporcionarle un resultado tan bueno como el de un gráfico FFT con relleno de ceros más largo y más intensivo en cómputo. Por lo tanto, el relleno cero le brinda un "mejor" resultado de seguimiento de tono que la selección de pico sin relleno y sin interpolación, pero a menudo es mucho menos eficiente que simplemente usar la interpolación.
Si agrega ruido a su ejemplo, pero un poco menos que la señal, encontrará que el pico rellenado con ceros puede ser tan inexacto como el pico rellenado sin ceros. Por lo tanto, en el caso más general, es posible que no haya encontrado la frecuencia "correcta" con más precisión que antes. El relleno cero solo interpola el resultado inexacto debido al ruido, razón por la cual se dice que no aumenta la resolución.
fuente
f=236.4 hz
durante la misma10ms
pero con fs = 192khz en lugar de 44.1khz: ¿La resolución de frecuencia verdadera será mayor entonces?sinc
curva similar en DFT sea más estrecha o no? Si no, esto implica que el aumento de la frecuencia de muestreo no agregará resolución (en la capacidad de resolución de frecuencias)