Site menu Amostragem digital: base teórica

Amostragem digital: base teórica

A base empírica da amostragem digital de sinais é relativamente fácil de entender: mede-se o sinal analógico a intervalos regulares, e os valores observados são armazenados como uma lista de números.

A pergunta é a seguinte: quem garante que essa lista de números representa fielmente o sinal original? Ou, sendo mais prático: quem garante que podemos reconstruir o sinal original com base nessa lista de números? (Os audiófilos saudosistas juram de pé junto que não.)

Para responder essas perguntas de forma convincente, precisamos de um pouco de matemática.

Modelar o que acontece na amostragem digital usando matemática "analógica" exige um truque, que é a função impulso unitário.

Impulso unitário

A função impulso unitário ∂(x) tem as seguintes características: ∂(x)=0 exceto ∂(0)=∞. A integral de ∂(x) é igual a 1. Portanto, o impulso unitário é um sinal cuja energia total é finita, porém concentrada numa região muito pequena.

Graficamente, o impulso unitário costuma ser representado por uma seta vertical:

             A
             |
             |
--------------------------

Para deslocar o impulso unitário para um instante diferente de x=0, podemos usar fórmulas como ∂(x−5) que desloca o impulso para x=+5 sem mudar a definição original de ∂.

A transformada de Fourier de ∂(t) é uma constante, ou seja, F(∂)(f)=1. Isto quer dizer que, se o impulso unitário for no domínio do tempo, seu espectro é infinito e uniforme em todas as freqüências.

O impulso unitário é um conceito que existe só na ficção, mas alguns fenômenos têm semelhança com ele. Por exemplo, um raio é quase um impulso unitário, e de fato ele emite radiação eletromagnética de todo tipo, desde ondas longas até raios X.

Por outro lado, a transformada inversa de Fourier de um impulso unitário é uma senóide perfeita (*). Isto significa que um impulso unitário no domínio da frequência significa um tom puro no domínio do tempo.

Não existem senóides 100% puras no mundo real — o simples fato delas terem início e fim tira sua pureza; uma senóide matematicamente pura não tem começo nem fim. Mas uma senóide com duração razoavelmente longa tem um espectro que aproxima-se do impulso unitário.

Finalmente, a convolução de qualquer função s(x) com ∂(x) é simplesmente igual a s(x). A convolução s(x)*∂(x−t) resulta em s(x−t), isto é, uma versão defasada de s(x).

Trem de impulsos unitários

Em vez de um único impulso unitário, podemos ter um trem de impulsos periódicos, em geral se estendendo ao infinito:

        A       A       A
        |       |       |
        |       |       |
... -------------------------...

Vamos considerar aqui apenas os trens de impulsos equidistantes, separados por uma distância T. A função possui valores não-zero quando "t" é um múltiplo inteiro de T, incluindo t=0.

A transformada de Fourier (direta ou inversa) de um trem de impulsos é outro trem de impulsos. O detalhe é que, se os impulsos possuem periodicidade T, os impulsos da transformada possuem periodicidade 1/T.

Isto significa que, quanto mais próximos estiverem os impulsos no domínio do tempo, mais distantes estarão os pulsos no domínio da freqüência. O limite máximo é um trem de pulsos infinitamente "denso", que é uma função de valor constante — cujo espectro possui um único impulso em F(0).

Por outro lado, o limite mínimo é o caso que já vimos: um trem de pulsos infinitamente esparso, com apenas um pulso em ∂(0). Neste caso o espectro é um trem de pulsos infinitamente denso, ou seja, F(f) é sempre diferente de zero.

Como dissemos antes, a convolução de uma função qualquer s(x) com um impulso unitário resulta numa simples cópia de s(x). Já a convolução de s(x) com um trem de pulsos unitários gera infinitas cópias de s(x), cada uma deslocada de T: s(x), s(x+T), s(x+2T), s(x+3T) e assim por diante.

Se a função s(x) possui valores não-nulos para todo o domínio de "x", a convolução com um trem de impulsos não faz sentido, pois cada ponto do resultado seria a soma de infinitas cópias superpostas de s(x). Essa convolução só faz sentido quando s(x) existe apenas num trecho limitado de "x".

Um tipo especial de trem de impulsos unitários no domínio do tempo é aquele em que p(t)=1 quando "t" é múltiplo inteiro de T, e p(t)=0 para o resto. A integral de p(t) é igual a zero (pois os impulsos são infinitamente "magros"), mas o valor de cada pico é igual a 1. Essa função é denominada "pente digital" ou "peneira digital".

Amostragem digital

Do ponto de vista da matemática "analógica", o processo de amostragem digital pode ser modelado pela multiplicação de um sinal analógico s(t) por uma "peneira digital" p(t) de periodicidade T, gerando um sinal descontínuo s'(t).

O sinal s(t) é analógico, portanto é uma função contínua. Já s'(t) é uma função descontínua, pois só tem valor não-nulo quando "t" é múltiplo inteiro de T. Que tipo de espectro possui o sinal s'(t)?

Uma propriedade da transformada de Fourier é: a multiplicação em um domínio corresponde a convolução no outro domínio. Uma vez que temos s(t)p(t), o espectro será F(s)(f)*F(p)(f).

O espectro de s(t) é uma função contínua, pois trata-se de um sinal analógico. Já o espectro de p(t) é um trem de impulsos unitários. Logo, o espectro de s'(t) é simplesmente o espectro de s(t) repetido periodicamente, até o infinito.

Aqui temos o primeiro requisito: o espectro de s(t) tem de ser limitado, para que F(s)(f) exista apenas numa faixa limitada de valores de "f". Do contrário, F(s')(f) teria valor infinito para todo "f".

O segundo requisito é que o espectro de s(t) seja repetido de forma suficientemente espaçada, ou seja, não haja sobreposição entre cópias. Considerando que o "pente digital" p(t) possui periodicidade T, os impulsos unitários do seu espectro F(p) possuem periodicidade 1/T. Por exemplo, se T=25µs, 1/T=40000Hz. A princípio, a banda de s(t) poderia ser de até 40000Hz.

Porém, o espectro de um sinal real s(t) é simétrico em torno de f=0, ou seja, |F(f)|=|F(-f)| (**) então seu espectro tem na verdade o dobro da largura inicialmente prevista. Por exemplo, um sinal com banda de 20000Hz tem espectro de -20000Hz a +20000Hz, total 40000Hz. Portanto, a largura de banda de s(t) deve ser menor que a metade de 1/T.

Esta é a origem do "limite de Nyquist". Uma taxa de amostragem de 40000Hz pode representar um sinal de no máximo 20000Hz de banda-base.

Se respeitarmos o limite de Nyquist, o espectro de s'(t) contém infinitas cópias do espectro de s(t), porém as cópias não se sobrepõem nem interferem umas com as outras.

Isto significa que podemos reconstruir s(t) simplemente passando s'(t) por um filtro passa-baixas, que só deixa passar uma cópia do espectro, a de banda-base.

Acabamos de provar que a digitalização de um sinal analógico é possível e reversível.

Amostragem digital na prática

O limite de Nyquist presume que nossos filtros são perfeitos, ou seja, deixam passar 100% do sinal na banda desejada, e 0% no resto, e sem nenhuma distorção de fase. Tais filtros não são realizáveis na prática.

Isso afeta tanto o processo de amostragem digital (filtrar s(t) para que caiba no limite de Nyquist) quanto para o processo inverso (filtrar s'(t) para reconstruir o sinal original).

A solução prática é deixar uma folga. O padrão de áudio digital do CD usa uma taxa de amostragem de 44100Hz, mas sua banda passante é de 20000Hz em vez de 22050Hz.

Conversão de taxa

É extremamente comum a necessidade de mudar a taxa de amostragem de um sinal digitalizado. Os conceitos matemáticos desenvolvidos até aqui nos permitirão mostrar que essa conversão pode ser feita puramente no domínio digital.

O primeiro fundamento para redução de taxa de amostragem denomina-se decimação. Consiste simplesmente em aproveitar apenas 1 a cada N amostras, de acordo com a taxa de redução que pretendemos obter (2:1, 3:1, etc.).

Supondo uma decimação 3:1, estamos reduzindo o limite de Nyquist a um terço do original. Logo, precisamos filtrar o sinal s'(t) antes da decimação, de modo que a largura de banda-base caiba nesse novo limite. Do contrário, a banda em excesso será deslocada para cima da banda-base, destruindo o sinal.

Note que esse processo é semelhante ao da digitalização, onde tiramos uma amostra periódica do sinal analógico dentre inúmeras, e também tivemos de limitar o espectro do sinal analógico antes de fazer a amostragem.

O segundo fundamento para aumento de taxa de amostragem denomina-se enchimento ou "stuffing". Simplesmente adicionamos N−1 amostras zero depois de cada amostra original, totalizando N, de acordo com a taxa de aumento desejada (1:2, 1:3, etc.).

O enchimento é um processo que também lembra a digitalização, onde um sinal contínuo s(t) torna-se um sinal descontínuo s'(t). O enchimento transforma s'(t) num sinal ainda mais descontínuo s''(t). A conseqüência espectral também é semelhante: o sinal s''(t) possui "N" cópias do espectro de s'(t).

Para remover as cópias indesejadas, s''(t) deve passar por um filtro passa-baixas depois do enchimento, limitando o sinal ao espectro de s'(t).

Decimação e enchimento só podem operar conversões com razão inteira. Para fazer uma conversão não-inteira, digamos 3:2, ou 4:3, ou 48000:44100, devemos encadear um enchimento seguido de decimação.

Como foi dito, precisamos usar filtros digitais logo depois de um enchimento, e logo antes de uma decimação. Em tese, numa conversão não-inteira, temos de passar dois filtros, um em seguida do outro. Como são ambos filtros passa-baixas, podemos passar apenas o filtro mais restritivo.

Mesmo assim a conversão não-inteira ainda é ineficiente, porque a) a maioria das amostras tratadas pelo filtro são introduzidas pelo enchimento e têm valor zero; b) a maioria das amostras produzidas pelo filtro é descartada na decimação — trabalho jogado fora.

Existe um algoritmo denominado filtro polifase que, a depender da versão, elimina algumas ou todas as ineficiências supracitadas. Na versão mais completa, ele realiza a conversão de taxa em uma única etapa.

Notas

(*) Na verdade, tem de ser um par de impulsos unitários, do contrário a transformada inversa seria a função complexa cos(t)+i.sen(t). Vide o ponto seguinte:

(**) O espectro de um sinal real possui tem amplitude par |F(f)|=|F(−f)| e fase ímpar φ(F(f))=−φ(F(−f)). Um espectro precisa respeitar essas igualdades para que a transformada inversa seja uma função real.