Para os fins desta resposta, usarei a terminologia do Matlab e definirá "upsampling" como o processo de inserção de z entre as amostras de entrada e "interpolação" como o processo combinado de upsampling e filtragem para remover os aliases de ( sendo o fator de interpolação) introduzido na amostragem. Para obter uma explicação de como / por que o upsampling introduz aliases, consulte este tópico .m - 1 mm - 1m - 1m
É importante entender que qualquer filtro passa-baixo pode ser usado para se livrar dos aliases e, assim, concluir a interpolação. Alguns filtros têm vantagens quando usados na interpolação. Discutirei os vários tipos de filtragem de interpolação abaixo.
Filtro FIR
Os filtros FIR de interpolação são eficientes porque combinam upsampling e filtragem de alias em uma única etapa. Isso é mais facilmente visto em um exemplo. Suponha que temos uma sequência de dados e queremos interpolá-la por um fator de dois. O primeiro passo é fazer um upsample por um fator de dois. Isso altera a sequência de dados original de para .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x Nx [ n ]x0 0, x1, . . . xNx0 0, 0 , x1, 0 , . . . xN
Agora, suponha que tenhamos um filtro FIR passa-baixo, , que usaremos para remover o alias. Quando convolvemos a sequência de dados com amostra ampliada com o filtro, metade das torneiras de filtro são estimuladas pelas amostras diferentes de zero e metade das torneiras ficam inativas porque correspondem às amostras zero. A metade que é estimulada e a metade que está inativa se alternam à medida que o filtro passa pelos dados. Esses dois conjuntos de derivações são chamados de fases do filtro.h [ n ]
Esse mesmo efeito pode ser conseguido implicitamente, eliminando a amostragem ampliada e filtrando a sequência de dados original com um filtro FIR interpolado. O filtro FIR interpolado produz saídas para cada amostra de entrada. Para todas as saídas o filtro funcionará nas mesmas amostras de entrada de teto (onde K é o número de derivações de filtro e "ceil" é a função de teto).m c e i l ( K / m )mmc e i l ( K/ m)
Esperemos que um exemplo ilustre como isso funciona. Suponha que temos um filtro de seis torneiras e estamos interpolando por um fator de dois. As torneiras de filtro são [1 -2 4 4 -2 1]. Se literalmente interpolássemos e filtrássemos as amostras, as torneiras de filtro se alinhariam (uma vez que houvesse sobreposição total) da seguinte maneira:
0 : 1x2: - 20 : 4x1: 40 : - 2x0 0: 1
Próxima amostra ...
x3: 10 : - 2x2: 40 : 4x1: - 20 : 1
Próxima amostra ...
0 : 1x3: - 20 : 4x2: 40 : - 2x1: 1
E assim por diante. O ponto do filtro de interpolação é que ele realmente pula a inserção dos zeros e apenas alterna qual conjunto de toques ele usa no momento. Assim, a sequência anterior seria agora a seguinte:
x2: - 2x1: 4x0 0: 1
x3: 1x2: 4x1: - 2
x3: - 2x2: 4x1: 1
Retenção de ordem zero
Um interpolador de espera de ordem zero é aquele que simplesmente repete cada amostra vezes. Portanto, um fator de dois interpoladores de espera de ordem zero converte em . Esse método é atraente porque é extremamente fácil de implementar, tanto em termos de codificação quanto de carga computacional.m - 1x0 0, x1, . . . xNx0 0, x0 0, x1, x1, . . . xN, xN
O problema é que a filtragem passa-baixo é muito ruim. Podemos ver que, quando reconhecemos que o interpolador de retenção zero é um caso especial de interpolação FIR. Corresponde à upsampling seguida por um filtro retangular de largura. A transformação de Fourier de um filtro retangular é uma função sinc, que é um filtro passa-baixo bastante gasto. Sua degradação pode ser corrigida com um filtro FIR compensador, mas se você quiser fazer isso, use um bom filtro passa-baixo para começar.m
Retenção de primeira ordem
A retenção de primeira ordem é um aumento do interpolador de retenção zero, na medida em que interpola linearmente as amostras superiores usando as duas amostras de entrada mais próximas. Portanto, um fator de dois interpoladores de espera de primeira ordem converteria em .x0 0, x1, . . . xNx0 0, x0 0+ x12, x1, x1+ x22, . . . xN
Como o interpolador de espera de ordem zero, o interpolador de espera de primeira ordem é um caso especial de interpolação FIR. Corresponde a upsampling e filtragem com um filtro triangular. Para interpolação com fator de dois, o filtro é , para interpolação com fator de três, o filtro é e assim por diante.[ 121 12][ 13231 2312]
O filtro triangular é formado por dois filtros retangulares convoluídos, o que corresponde a um quadrado sinc no domínio da frequência. Este é um passo definitivo da retenção de ordem zero, mas ainda não é ótimo.
Filtro IIR
Eu nunca usei um filtro IIR interpolado, por isso não vou falar muito sobre eles. Suponho que os mesmos argumentos se apliquem à filtragem regular - os filtros IIR são mais eficientes, podem ser instáveis, não possuem fase linear etc. Não acredito que eles possam combinar as etapas de upsampling e filtragem como um filtro FIR, mas eu posso estar errado sobre isso.
Interpolação FFT
Vou colocar este aqui, mesmo que não seja muito comum (é claro, também não acho que a retenção zero seja comum). Este tópico discute a reamostragem de FFT, em que reamostragem é interpolação e dizimação.
Retenções de ordem superior
Os interpoladores de espera de segunda ordem são geralmente referidos como "interpoladores quadráticos". Eles não são lineares e, portanto, não podem ser implementados como filtros FIR, que são lineares. Eu não entendo bem a matemática por trás deles, então não discutirei o desempenho deles. Eu direi, no entanto, que acredito que eles são um pouco comuns fora do processamento de sinais.
Também existem métodos de ordem superior (três ou mais). Estes são referidos como "regressões polinomiais".
EDITAR:
Filtros Cascade Integrator Comb (CIC)
Esqueci de mencionar os filtros CIC . Os filtros CIC são usados por dois motivos: eles usam apenas somadores / sub-caracteres (não é tão grande agora que as multiplicações são rápidas e baratas) e podem fazer alterações de taxa de amostragem realmente grandes com bastante eficiência. O lado negativo é que eles são essencialmente uma implementação eficiente de um filtro retangular em cascata, portanto, possuem todas as desvantagens dos filtros retangulares, conforme discutido acima. Os interpoladores CIC são praticamente sempre precedidos por um filtro FIR compensador que pré-distorce o sinal para cancelar a distorção introduzida pelo CIC. Se a alteração da taxa de amostragem for grande o suficiente, o custo do filtro de pré-distorção vale a pena.