¿Por qué decimos que "el relleno cero no aumenta realmente la resolución de frecuencia"

12

Aquí hay una sinusoide de frecuencia f = 236.4 Hz(tiene 10 milisegundos de largo; tiene N=441puntos a la frecuencia de muestreo fs=44100Hz) y su DFT, sin relleno de cero :

ingrese la descripción de la imagen aquí

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 :

ingrese la descripción de la imagen aquí

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!

Basj
fuente
1
Otra forma de pensar sobre esta pregunta muy antigua: si no tuviera el diagrama de la serie temporal en absoluto, sino solo el fft de 'baja resolución', podría convertirlo en la serie temporal, cero pad y re -fft para sacar los 236Hz. Por lo tanto, el fft de 'baja resolución' debe contener toda la misma información del liso.
Joshua R.

Respuestas:

19

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.

ingrese la descripción de la imagen aquí

f = 236.4;
d = 10;
N=441;
fs=44100;
extra_padding = 10000; 

t=[0:1/fs:(d/1000-1/fs)]
ff = [0:(N+extra_padding-1)]*fs/(N+extra_padding);

x = sin(2*%pi*f*t);

XX = [];

for delta_f = [0:100];
    y = sin(2*%pi*(f+delta_f)*t);
    FFTX = abs(fft([x+y zeros(1,extra_padding)]));
    XX = [XX; FFTX];
end

mtlb_axis([0 1300 0 500])

figure(1);
clf
[XXX,YYY] = meshgrid(ff,0:100);
mesh(XXX(1:100,[50:90]),YYY(1:100,[50:90]),XX(1:100,[50:90]))
Jason R
fuente
Gracias ! ok, entonces el relleno cero no ayudará a resolver dos tonos separados en frecuencias cercanas; sin embargo, en mi ejemplo, puede ser útil para encontrar el pico del espectro y, por lo tanto, encontrar la frecuencia fondamental de un tono (por ejemplo, para fines de seguimiento de tono exacto)
Basj
pensé que "el relleno cero no aumenta la resolución" significaría "no se puede hacer un seguimiento de tono preciso con la ayuda del relleno cero" (eso no es cierto aquí, el ejemplo muestra que es posible detectar con precisión algún tono)
Basj
Creo que lo entiendes correctamente. El relleno cero tiene sus usos, como en la estimación precisa de la ubicación del pico desde un espectro grueso. Simplemente no es una bala de plata.
Jason R
1
Acabo de intentar algo más que relleno cero, pero relacionado. En lugar de x(n)alargarme (con 0al final), mantengo la x(n)longitud N, PERO el cambio está aquí: en lugar de DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)for k=0,1,...,N-1, lo hago DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))para k=0,1,...,10*N-1... Esto es como agregar más bins ( 10 Nbins en lugar de Nbins de frecuencia) pero manteniendo el mismo x(n)de longitud N. 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?
Basj
¿Agregar más contenedores (10N en lugar de N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))para k=0,1,...,10*N-1y mantener la misma x(n)longitud Nda el mismo resultado que el relleno cero: en realidad, no más resolución, sino solo interpolación?
Basj
13

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.

hotpaw2
fuente
Solo para recordar: ¿qué sucede si tengo la misma sinusoide f=236.4 hzdurante la misma 10mspero con fs = 192khz en lugar de 44.1khz: ¿La resolución de frecuencia verdadera será mayor entonces?
Basj
Aumentar la frecuencia de muestreo le dará más ubicaciones de alta frecuencia, pero el mismo espacio de
ubicación
1
¿Aumentar la frecuencia de muestreo hará que la sinccurva 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)
Viernes
1/TT
El ancho del Sinc en frecuencia está relacionado con el ancho de la ventana de datos en el tiempo, el relleno de cero o el cambio de la frecuencia de muestreo realmente no lo afecta (aparte de los problemas de muestreo o cuantificación).
hotpaw2