Ai fini di questa risposta userò la terminologia di Matlab e definirò "upsampling" come processo di inserimento zeri tra i campioni di input e "interpolazione" come processo combinato di upsampling e filtro per rimuovere gli alias ( essendo il fattore di interpolazione) introdotto dal ricampionamento. Per una spiegazione di come / perché l'upsampling introduce alias, vedere questo thread .m - 1 mm - 1m - 1m
È importante comprendere che qualsiasi filtro passa-basso può essere utilizzato per eliminare gli alias e completare così l'interpolazione. Tuttavia, alcuni filtri presentano vantaggi se utilizzati nell'interpolazione. Discuterò i vari tipi di filtri di interpolazione di seguito.
Filtro FIR
I filtri FIR interpolati sono efficienti perché combinano upsampling e alias filter in un unico passaggio. Questo è più facilmente visibile in un esempio. Supponiamo di avere una sequenza di dati e vogliamo interpolarla di un fattore due. Il primo passo consiste nel ricampionare di un fattore due. Ciò modifica la sequenza di dati originale da a .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x Nx [ n ]X0, x1, . . . XNX0, 0 , x1, 0 , . . . XN
Supponiamo ora di avere un filtro FIR passa-basso, , che useremo per rimuovere l'alias. Quando contiamo la sequenza di dati ricampionata con il filtro, metà dei rubinetti del filtro sono stimolati da campioni diversi da zero e metà dei rubinetti sono inattivi perché corrispondono ai campioni zero. La metà stimolata e la metà inattiva si spostano avanti e indietro mentre il filtro passa attraverso i dati. Questi due set di rubinetti vengono talvolta definiti fasi del filtro.h [ n ]
Questo stesso effetto può essere ottenuto implicitamente eliminando l'upsampling e filtrando la sequenza di dati originale con un filtro FIR interpolante. Il filtro FIR interpolante produce output per ogni campione di input. Per tutte le uscite il filtro funzionerà sullo stesso campione di input (dove K è il numero di rubinetti del filtro e "ceil" è la funzione soffitto).m c e i l ( K / m )mmc e i l ( K/ m)
Si spera che un esempio illustri come funziona. Supponiamo di avere un filtro a sei rubinetti e di interpolare di un fattore due. I rubinetti del filtro sono [1 -2 4 4 -2 1]. Se interpolassimo letteralmente e quindi filtrassimo i campioni e i rubinetti del filtro si allineerebbero (una volta che ci fosse una sovrapposizione completa) come segue:
0 : 1X2: - 20 : 4X1: 40 : - 2X0: 1
Esempio successivo ...
X3: 10 : - 2X2: 40 : 4X1: - 20 : 1
Esempio successivo ...
0: 1X3:- 20: 4X2:40 : - 2X1: 1
E così via. Il punto del filtro di interpolazione è che salta effettivamente l'inserimento degli zeri e alterna semplicemente il set di tocchi che utilizza al momento. Pertanto, la sequenza precedente ora apparirebbe come la seguente:
X2: - 2X1: 4X0: 1
X3: 1X2: 4X1: - 2
X3: - 2X2: 4X1: 1
Zero Order Hold
Un interpolatore di mantenimento di ordine zero è uno che ripete semplicemente ogni campione volte. Quindi un fattore di due interpolatori di mantenimento in ordine zero converte in . Questo metodo è interessante perché è estremamente facile da implementare, sia in termini di codifica che di carico computazionale.m - 1X0,x1, . . .XNX0,x0,x1,x1, . . .XN,xN
Il problema è che il suo filtro passa-basso è piuttosto scarso. Possiamo vedere che quando riconosciamo che l'interpolatore zero-hold è un caso speciale di interpolazione FIR. Corrisponde al upsampling seguito da un filtro rettangolare a . La trasformata di Fourier di un filtro rettangolare è una funzione sinc, che è un filtro passa-basso piuttosto squallido. Lo shabbiness può essere risolto con un filtro FIR di compensazione, ma se lo farai potresti anche usare un buon filtro passa-basso per cominciare.m
Presa del primo ordine
Il primo ordine hold è un passo in avanti rispetto all'interpolatore zero-hold in quanto interpola linearmente i campioni up usando i due campioni input più vicini. Quindi, un fattore di due interpolatori di mantenimento del primo ordine convertirà in .X0,x1, . . .XNX0,x0+ x12,x1,x1+ x22, . . .XN
Come l'interpolatore di mantenimento di ordine zero, l'interpolatore di mantenimento di primo ordine è un caso speciale di interpolazione FIR. Corrisponde al upsampling e al filtro con un filtro a triangolo. Per l'interpolazione fattore due il filtro è , per interpolazione fattore tre il filtro è e così via.[1[121 12][ 13231 2312]
Il filtro triangolo è costituito da due filtri rettangolari contorti insieme, che corrisponde a sinc al quadrato nel dominio della frequenza. Questo è un netto passo in avanti rispetto alla posizione zero, ma non è ancora eccezionale.
Filtro IIR
Non ho mai usato un filtro IIR interpolante, quindi non ne parlerò molto. Presumo che si applichino gli stessi argomenti del filtro normale: i filtri IIR sono più efficienti, possono essere instabili, non hanno fasi lineari, ecc. Non credo che possano combinare i passaggi di ricampionamento e filtro come un filtro FIR, ma potrei sbagliarmi.
Interpolazione FFT
Lo inserirò anche se non è molto comune (ovviamente, non penso che neanche lo zero-hold sia comune). Questo thread discute il ricampionamento FFT, in cui il ricampionamento è sia interpolazione che decimazione.
Stive di ordine superiore
Gli interpolatori di secondo ordine vengono generalmente chiamati "interpolatori quadratici". Sono non lineari e quindi non possono essere implementati come filtri FIR, che sono lineari. Non capisco bene la matematica dietro di loro, quindi non discuterò della loro performance. Dirò, tuttavia, che credo che siano piuttosto comuni al di fuori dell'elaborazione del segnale.
Esistono anche metodi di ordine superiore (tre o più). Questi sono indicati come "regressioni polinomiali".
MODIFICARE:
Filtri a cascata Integrator Comb (CIC)
Ho dimenticato di menzionare i filtri CIC . I filtri CIC sono usati per due motivi: usano solo additivi / sottrattori (non è un grosso problema ora che le moltiplicazioni sono veloci ed economiche) e possono fare cambiamenti di frequenza di campionamento molto grandi in modo abbastanza efficiente. Il loro lato negativo è che sono essenzialmente un'implementazione efficiente di un filtro rettangolare a cascata, quindi hanno tutti gli svantaggi dei filtri rettangolari come discusso sopra. Gli interpolatori CIC sono praticamente sempre preceduti da un filtro FIR di compensazione che pre-distorce il segnale per annullare la distorsione introdotta dal CIC. Se la variazione della frequenza di campionamento è abbastanza grande, ne vale la pena il costo del filtro pre-distorsione.