Perché diciamo che "zero-padding non aumenta realmente la risoluzione della frequenza"


12

Ecco una sinusoide di frequenza f = 236.4 Hz(è lunga 10 millisecondi; ha N=441punti alla frequenza di campionamento fs=44100Hz) e il suo DFT, senza riempimento zero :

inserisci qui la descrizione dell'immagine

L'unica conclusione che possiamo dare guardando il DFT è: "La frequenza è approssimativamente di 200Hz".

Ecco il segnale e il suo DFT, con un grande zero-padding :

inserisci qui la descrizione dell'immagine

Ora possiamo dare una conclusione molto più precisa : "Osservando attentamente il massimo dello spettro, posso stimare la frequenza di 236Hz" (ho ingrandito e ho scoperto che il massimo è vicino a 236).

La mia domanda è: perché diciamo che "zero-padding non aumenta la risoluzione" ? (Ho visto questa frase molto spesso, poi dicono "aggiunge solo interpolazione")

=> Con il mio esempio, lo zero padding mi ha aiutato a trovare la giusta frequenza con una risoluzione più precisa!


1
Un altro modo di pensare a questa domanda molto antica: se non avessi affatto la trama della serie temporale, ma solo la fft 'a bassa risoluzione', potresti convertirla in serie storiche, zero-pad e ri -fft per ottenere 236Hz. Quindi, il file "low-res" deve contenere tutte le stesse informazioni di quello liscio.
Joshua R.,

Risposte:


19

La risoluzione ha una definizione molto specifica in questo contesto. Si riferisce alla tua capacità di risolvere due toni separati a frequenze vicine. Hai aumentato la frequenza di campionamento della stima dello spettro, ma non hai acquisito alcuna capacità di discriminare tra due toni che potrebbero essere, ad esempio, a 236 Hz e 237 Hz. Al contrario, si "fonderanno insieme" in un unico BLOB, indipendentemente dalla spaziatura zero da applicare.

La soluzione per aumentare la risoluzione è osservare il segnale per un periodo di tempo più lungo, quindi utilizzare un DFT più grande. Ciò si tradurrà in lobi principali la cui larghezza è inversamente proporzionale alla dimensione del DFT, quindi se si osserva abbastanza a lungo, è possibile risolvere effettivamente le frequenze di più toni che si trovano uno accanto all'altro.

-

Per vedere come va, ecco un diagramma della FFT ingrandita dell'aggiunta di due segnali: la sinusoide originale e una che differisce in frequenza da 0 a 100 Hz.

È solo verso la fine della differenza di 100Hz della trama (qui a sinistra) che puoi distinguere (risolvere) i due.

Codice Scilab per generare la trama qui sotto.

inserisci qui la descrizione dell'immagine

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]))

Grazie ! ok, quindi lo zero padding non aiuta a risolvere due toni separati alle frequenze vicine; tuttavia, nel mio esempio, può essere utile per trovare il picco dello spettro e quindi trovare la frequenza fondamentale di un tono (ad esempio per scopi di tracciamento accurato del tono)
Basj

pensavo che "lo zero padding non aumentasse la risoluzione" significherebbe "non è possibile eseguire un accurato tracking del pitch con l'aiuto dello zero padding" (non è vero qui, l'esempio mostra che è possibile rilevare con precisione un pitch)
Basj

Penso che tu capisca correttamente. Lo zero padding ha i suoi usi, come ad esempio nella stima fine della posizione del picco da uno spettro grossolano. Non è solo un proiettile d'argento.
Jason R,

1
Ho appena provato qualcos'altro oltre allo zero-padding, ma correlato. Invece di x(n)allungare (con 0alla fine), mantengo la x(n)lunghezza N, MA il cambiamento è qui: invece di DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)per k=0,1,...,N-1, lo faccio DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))per k=0,1,...,10*N-1... Questo è come aggiungere più bin ( 10 Nbin anziché bin di Nfrequenza) ma mantenendo lo stesso x(n)di lunghezza N. Ora i bin sarebbero 10hz, 20hz, ..., 100hz, 110hz, 120hz, ..... => È lo stesso di zero-padding: nessuna risoluzione aggiuntiva reale, ma solo interpolazione?
Basj,

L'aggiunta di più bin (10N invece di N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))per k=0,1,...,10*N-1e mantenere la stessa x(n)lunghezza Nfornisce lo stesso risultato dello zero padding: non più risoluzione, ma solo interpolazione?
Basj,

13

Il termine "risoluzione" ha molteplici significati, che possono confondere le persone che cercano di comunicare quando usano due significati diversi.

Nel senso ottico, di essere in grado di risolvere due punti vicini chiaramente separati (o due picchi adiacenti nello spettro) invece di un blob sfocato, lo zero padding non aiuterà. Questo è probabilmente il significato usato quando si afferma che lo zero padding non aumenta la risoluzione.

Se il proprio requisito di risoluzione richiede un calo (ad esempio un abbassamento minimo di 3 dB) tra i picchi spettrali, la risoluzione sarà persino inferiore alla spaziatura del contenitore FFT, ad esempio nemmeno Fs / N, ma da 2X a 3X che, o più, a seconda della finestra utilizzata. Un requisito più debole per la risoluzione potrebbe essere proprio la spaziatura di frequenza dei vettori della base ortogonale del DFT, ad esempio Fs / N.

In termini di punti di tracciamento, sì, lo zero padding ti darà più punti da tracciare, come nella risoluzione DPI (punti di trama per pollice). Ciò potrebbe rendere più semplice la rilevazione degli estremi mediante bulbo oculare. Tuttavia sono gli stessi punti che otterresti facendo un'interpolazione della trama di altissima qualità (interpolazione Sinc) senza alcuna spaziatura interna, quindi in realtà non aggiungono informazioni che non potrebbero essere calcolate altrimenti senza la spaziatura zero.

In termini di tracciamento dell'intonazione, l'interpolazione parabolica o sincera (interpolazione tra i bin dei risultati FFT) di un risultato FFT con finestra non con riempimento a zero potrebbe fornire un risultato altrettanto buono rispetto a un diagramma FFT con riempimento a zero più lungo e più intensivo dal punto di vista computazionale. Pertanto, il padding zero offre un risultato di tracciamento del pitch "migliore" rispetto al pick picking non con riempimento zero e non interpolato, ma spesso molto meno efficiente rispetto al semplice utilizzo dell'interpolazione.

Se aggiungi del rumore al tuo esempio, ma leggermente inferiore al segnale, scoprirai che il picco con spaziatura zero può essere altrettanto impreciso del picco con spaziatura diversa da zero. Quindi, nel caso più generale, potresti non aver trovato la frequenza "giusta" con una precisione maggiore rispetto a prima. Lo zero padding interpola solo il risultato impreciso a causa del rumore, motivo per cui si dice che non aumenti la risoluzione.


Solo per ricordare: cosa succede se ho la stessa sinusoide solo f=236.4 hzdurante lo stesso 10msma con fs = 192khz invece di 44.1khz: allora la vera risoluzione della frequenza sarà più alta?
Basj,

Aumentare la frequenza di campionamento ti darà più bin ad alta frequenza, ma la stessa spaziatura tra i bin DFT vicino a qualsiasi bassa frequenza di interesse,
hotpaw2

1
Aumentare la frequenza di campionamento renderà la sinccurva simile in DFT più stretta o no? In caso contrario, ciò implica che l'aumento della frequenza di campionamento non aumenterà la risoluzione (nella capacità di significato di risolvere le frequenze)
Basj

1/TT

L'ampiezza del Sinc in frequenza è correlata all'ampiezza della finestra dei dati nel tempo, lo zero padding o la modifica della frequenza di campionamento non influiscono realmente (a parte i problemi di campionamento o quantizzazione).
hotpaw2,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.