Pourquoi disons-nous que "le zéro-padding n'augmente pas vraiment la résolution de fréquence"

12

Voici une sinusoïde de fréquence f = 236.4 Hz(elle fait 10 millisecondes de long; elle a des N=441points à la fréquence d'échantillonnage fs=44100Hz) et sa DFT, sans zéro-padding :

entrez la description de l'image ici

La seule conclusion que nous pouvons donner en regardant la DFT est: "La fréquence est d'environ 200 Hz".

Voici le signal et sa DFT, avec un grand zéro-padding :

entrez la description de l'image ici

Maintenant nous pouvons donner une conclusion beaucoup plus précise : "En regardant attentivement le maximum du spectre, je peux estimer la fréquence 236Hz" (j'ai zoomé et j'ai trouvé que le maximum est proche de 236).

Ma question est: pourquoi disons-nous que le "zéro-padding n'augmente pas la résolution" ? (J'ai vu cette phrase très souvent, puis ils disent "ça n'ajoute que l'interpolation")

=> Avec mon exemple, le zéro-padding m'a aidé à trouver la bonne fréquence avec une résolution plus précise!

Basj
la source
1
Une autre façon de penser à cette très vieille question: si vous n'aviez pas du tout l'intrigue des séries temporelles, mais seulement le fft `` basse résolution '' - vous pourriez le convertir en séries temporelles, zéro-pad et re -fft pour sortir le 236Hz. Ainsi, le fft «basse résolution» doit contenir toutes les mêmes informations que celles du lisse.
Joshua R.

Réponses:

19

La résolution a une définition très spécifique dans ce contexte. Cela fait référence à votre capacité à résoudre deux tonalités distinctes à des fréquences proches. Vous avez augmenté la fréquence d'échantillonnage de votre estimation de spectre, mais vous n'avez acquis aucune capacité à distinguer entre deux tonalités qui pourraient être, par exemple, à 236 Hz et 237 Hz. Au lieu de cela, ils «fusionneront» en une seule goutte, peu importe la quantité de remplissage nul que vous appliquez.

La solution pour augmenter la résolution consiste à observer le signal pendant une période plus longue, puis à utiliser un DFT plus grand. Cela se traduira par des lobes principaux dont la largeur est inversement proportionnelle à la taille DFT, donc si vous observez assez longtemps, vous pouvez réellement résoudre les fréquences de plusieurs tons qui sont proches les uns des autres.

-

Pour voir comment cela se passe, voici un tracé de la FFT zoomée de l'addition de deux signaux: votre sinusoïde d'origine, et celle dont la fréquence en diffère de 0 à 100 Hz.

Ce n'est que vers la différence de 100 Hz de l'intrigue (côté gauche ici) que vous pouvez distinguer (résoudre) les deux.

Code Scilab pour générer le tracé ci-dessous.

entrez la description de l'image ici

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
la source
Merci ! ok donc le zéro-padding n'aidera pas à résoudre deux tonalités distinctes aux fréquences proches; cependant, dans mon exemple, il peut être utile afin de trouver le pic du spectre, et donc de trouver la fréquence fondamentale d'un ton (par exemple à des fins de suivi de hauteur précis)
Basj
je pensais que "zéro padding n'augmente pas la résolution" signifierait "vous ne pouvez pas faire un suivi de hauteur précis à l'aide du zéro-padding" (ce n'est pas vrai ici, l'exemple montre qu'il est possible de détecter avec précision une certaine hauteur)
Basj
Je pense que vous comprenez bien. Le remplissage nul a ses utilisations, comme dans l'estimation fine de l'emplacement de crête à partir d'un spectre grossier. Ce n'est tout simplement pas une solution miracle.
Jason R
1
J'ai juste essayé autre chose que le zéro, mais lié. Au lieu d' x(n)allonger (avec 0à la fin), je garde la x(n)longueur N, MAIS le changement est là: au lieu de DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)pour k=0,1,...,N-1, je fais DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))pour k=0,1,...,10*N-1... C'est comme ajouter plus de bacs ( 10 Nbacs au lieu de Nbacs de fréquence) mais en gardant les mêmes x(n)de longueur N. Maintenant, les casiers seraient de 10 Hz, 20 Hz, ..., 100 Hz, 110 Hz, 120 Hz, ..... => Est-ce la même chose que le zéro-padding: pas de réelle résolution supplémentaire, mais seulement une interpolation?
Basj
L'ajout de plus de bacs (10N au lieu de N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))pour k=0,1,...,10*N-1et en gardant la même x(n)longueur Ndonne-t-il le même résultat que le zéro-padding: pas vraiment plus de résolution, mais seulement une interpolation?
Basj
13

Le terme «résolution» a plusieurs significations, ce qui peut dérouter les gens qui essaient de communiquer lorsqu'ils utilisent deux significations différentes.

Dans le sens optique, être capable de résoudre deux points voisins clairement séparés (ou deux pics adjacents dans le spectre) au lieu d'un blob flou, le remplissage nul n'aidera pas. C'est le sens le plus probable utilisé pour déclarer que le remplissage nul n'augmente pas la résolution.

Si une exigence de résolution nécessite un creux (par exemple une baisse d'au moins 3 dB) entre les pics spectraux, alors la résolution sera encore plus faible que l'espacement des cases FFT, par exemple pas même Fs / N, mais 2X à 3X cela, ou plus, selon le fenêtrage utilisé. Une exigence de résolution plus faible pourrait être simplement l'espacement des fréquences des vecteurs de base orthogonaux de la TFD, par exemple Fs / N.

En termes de points de tracé, oui, le remplissage nul vous donnera plus de points à tracer, comme dans la résolution DPI (points de tracé par pouce). Cela peut faciliter le repérage des extrema par le globe oculaire. Cependant, ce sont les mêmes points que vous obtiendriez en effectuant une interpolation de tracé de très haute qualité (interpolation Sinc) sans aucun zéro, donc ils n'ajoutent vraiment aucune information qui ne pourrait pas être calculée autrement sans le zéro.

En termes de suivi de hauteur, l'interpolation parabolique ou Sinc (interpolation entre les cases de résultat FFT) d'un résultat FFT fenêtré non nul peut vous donner un résultat tout aussi bon que d'un tracé FFT plus long, plus intensif en calcul. Ainsi, le padding zéro vous donne un "meilleur" résultat de suivi de la hauteur que la sélection de pic non-rembourrée et non interpolée, mais souvent beaucoup moins efficacement que l'utilisation de l'interpolation.

Si vous ajoutez du bruit à votre exemple, mais légèrement moins que le signal, vous constaterez que le pic à zéro nul peut être tout aussi inexact que le pic à zéro différent. Donc, dans le cas plus général, vous n'avez peut-être pas trouvé la «bonne» fréquence avec plus de précision qu'auparavant. Le remplissage nul n'interpole que le résultat inexact dû au bruit, ce qui explique pourquoi il n'augmente pas la résolution.

hotpaw2
la source
Juste pour me souvenir: que se passe-t-il si j'ai la même sinusoïde f=236.4 hzpendant le même 10msmais avec fs = 192khz au lieu de 44.1khz: la vraie résolution de fréquence sera-t-elle alors plus élevée?
Basj
L'augmentation de la fréquence d'échantillonnage vous donnera plus de casiers à haute fréquence, mais le même espacement des casiers DFT près de toute basse fréquence d'intérêt,
hotpaw2
1
Est-ce que l'augmentation de la fréquence d'échantillonnage rendra la sinccourbe similaire à DFT plus étroite ou non? Sinon, cela implique que l'augmentation de la fréquence d'échantillonnage n'ajoutera pas de résolution (dans le sens de la capacité à résoudre les fréquences)
Basj
1/TT
La largeur du Sinc en fréquence est liée à la largeur de la fenêtre de données dans le temps, le remplissage nul ou la modification de la fréquence d'échantillonnage ne l'affecte pas vraiment (à part les problèmes d'échantillonnage ou de quantification).
hotpaw2