Riempimento zero nel dominio della frequenza - trattamento speciale di X [N / 2]


18

Supponiamo di voler interpolare un segnale periodico con un numero pari di campioni (es. N = 8) mediante zero-pad nel dominio della frequenza.

Lascia che il DFT X=[A,B,C,D,E,F,G,H]
Now lo riempia di 16 campioni da dare Y. Ogni esempio di libro di testo e tutorial online che ho visto inserisce zeri nel dare . (Quindi è il segnale interpolato.)[Y4...Y11]
Y=[2A,2B,2C,2D,0,0,0,0,0,0,0,0,2E,2F,2G,2H]
y = idft(Y)

Perché non usare invece Y=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]?

Per quanto ne so (la mia conoscenza della matematica è limitata):

  • Riduce al minimo la potenza totale
  • Assicura che se il valore xè reale, lo è anchey
  • ysi interseca ancora xin tutti i punti campione, come richiesto (penso che questo sia vero per qualsiasi pdove Y=[2A,2B,2C,2D,pE,0,0,0,0,0,0,0,(2-p)E,2F,2G,2H])

Allora perché non è mai stato fatto così?


Modifica : xnon è necessariamente valutato a livello reale o limitato di banda.


Scrivi "Ogni esempio di manuale e tutorial online che ho visto inserisce zeri in ...", puoi aggiornare il tuo post con alcuni riferimenti? Solo curioso perché scrivi anche che x non è necessariamente valorizzato e la prima costruzione che menzioni non produce (in generale) un risultato reale da DFT inverso.
niaren,

@niaren ecco un esempio: dspguru.com/dsp/howtos/…
finnw,

1
Vale la pena notare che per poter valutare , allora dovresti lasciare (ovvero quando si duplica E per la metà "frequenza negativa" del vettore dominio di frequenza, è necessario coniugarlo. I segnali che sono reali nel dominio del tempo hanno DFT simmetrici coniugati.Y = [ 2 A , 2 B , 2 C , 2 D , E , 0 , 0 , 0 , 0 , 0 , 0 , 0 , E , 2 F , 2 G , 2 H ]yY=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]
Jason R

1
@Jason R, se il segnale di ingresso ha un valore reale, allora lo è anche E [2A, 2B, 2C, 2D, E, 0,0,0,0,0,0,0, E, 2F, 2G, 2H] soddisfa questa condizione. Se l'input non ha valore reale, non è necessario forzare l'output a valore reale.
finnw,

Hai ragione. Questo è quello che ottengo scrivendo un commento troppo tardi la sera.
Jason R,

Risposte:


7

Diamo un'occhiata alle frequenze dei bin nel DFT a 8 punti:

Quindi quando interpoli di un fattore 2 ,la frequenza delpuntoEdiventa-πo+π.

ωA=0,ωB=π/4,ωC=π/2,ωD=3π/4,ωE=π=π (mod 2π),ωF=5π/4=3π/4 (mod 2π),ωG=3π/2=π/2 (mod 2π),ωH=7π/4=π/4 (mod 2π)
Eπ+π

A prima vista, non riesco a vedere quale sia il problema con il tuo approccio in quanto non è chiaro se debba essere inserito nel cestino associato a π o - π .Eππ

Sulla pagina di Julius O. Smith III , afferma una condizione:

Inoltre, richiediamo quando N è pari, mentre dispari non richiede tale restrizione.x(N/2)=x(N/2)=0N

E il suo esempio c'è per una dispari , che evita il problema.N


Non sono sicuro che sia richiesto, ma ecco il riferimento completo al lavoro di Giulio:

Smith, JO Mathematics of the Discrete Fourier Transform (DFT) with Audio Applications, Second Edition, http://ccrma.stanford.edu/~jos/mdft/ , 2007, libro online, visitato il 28 settembre 2011.


2

Esistono molti modi per interpolare i dati. L'interpolazione nella mia mente significa che "disegni" linee tra alcuni punti di dati. Questo può essere fatto in molti modi. Un tipo di interpolazione che è utile in DSP (specialmente in DSP multirate) è "Interpolazione Bandlimited". Se vai su Google, otterrai molti risultati interessanti e utili. Ciò che proponete non è l'interpolazione bandlimited. Nel tuo "ricampionamento" x hai componenti di frequenza non presenti nella x originale.

Modifica (troppo tempo per adattarsi a un commento):

X=[A,B,C,D,E,F,G,H]

Considerando input reali

X=[A,B,C,D,E,D,C,B]

x0,0,x1,0,...0π/2π/2π

X2=[A,B,C,D,E,D,C,B,A,B,C,D,E,D,C,B]

π/2

yn=k=x2ksinc(0.5nk)

In pratica, tuttavia, ci sarà una certa distorsione perché il filtro a muro di mattoni non è realistico. Il filtro pratico può sopprimere / rimuovere le frequenze nell'ingresso o può lasciare in alcuni dei componenti di frequenza nell'immagine nel segnale ricampionato. Oppure il filtro può fare un compromesso tra i due. Penso che anche la costruzione del tuo dominio di frequenza rifletta questo compromesso. Questi due esempi, rappresentano due diverse scelte:

Y=[A,B,C,D,E,0,0,0,0,0,0,0,E,D,C,B]

Y=[A,B,C,D,0,0,0,0,0,0,0,0,0,D,C,B]

Se l'ingresso è bandlimited sotto la frequenza di nyquist come nel tuo riferimento questo problema scompare.

ρ

Y=[A,B,C,D,ρ,0,0,0,0,0,0,0,ρ,D,C,B]


1
x

@leftaroundabout La x originale è bandlimited (in questo esempio alla frequenza di Nyquist). OP vuole sottocampionare x di un fattore 2 (la mia interpretazione). Un modo per upcampionare x è inserire gli zeri nella risposta in frequenza come mostrato da OP (l'esempio senza E, quello mostrato nei libri di testo DSP) ed eseguire una FFT inversa. Credo che lo stesso avrebbe potuto essere ottenuto inserendo zeri (interfogliati) nel filtro x e (passa basso) da un sinc. Inserendo E come mostrato da OP, la x ricampionata non viene limitata alla frequenza originale di Nyquist. Questo in genere non è desiderato (è distorsione). Sei d'accordo?
niaren,

1
Eπ2π2

Suppongo che la frequenza ± N / 2 sia presente in x. Se non lo è (a causa di limiti di banda o altro), allora E sarebbe 0 comunque, quindi non ci sarebbe differenza tra il riempimento con E (o 2E) e il riempimento con 0.
finnw,

1
Un segnale bandlimited può ancora avere contenuto nel bin N / 2 a causa della "dispersione spettrale" da qualsiasi contenuto spettrale non periodico in apertura DFT, in particolare vicino (ma non a) Fs / 2.
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.