Introdução à Filtros Digitais Filtros básicos, parâmetros no domínio do tempo e frequência, classificação de filtros Filtros são usados basicamente para dois propósitos: • Separação de sinais combinados; • Restauração de sinal que foi distorcido. A princípio, a separação e/ou restauração de sinais pode ser realizada com ambos os tipos de filtros, analógicos e digitais. As diferenças básicas são: Analógicos • Barato • Rápidos • Grande faixa dinâmica (amplitude e frequência) Digitais • Muito melhor desempenho. Ex.: Será visto um filtro passa-baixa que possui ganho 1±0,0002 entre frequência zero e 1000Hz e um ganho de menos que 0,0002 para frequências acima de 1001Hz. Excelente não? Filtros lineares comumente apresentam as curvas abaixo: -3dB : amplitude do sinal cai à 0,707 e a potência é reduzida à 0,5. DOMÍNIO DO TEMPO Resposta ao degrau Tempo de subida: entre 10% e 90%. Deseja-se o menor possível. Overshoot: distorção da informação. Fase linear: simetria entre as metades superior e inferior → resposta em frequência com fase linear. DOMÍNIO DA FREQUÊNCIA Resposta em frequência Banda passante: frequências permitidas (ganho 1 geralmente) Frequência de corte: 99%, 90%, 70,7% e 50% da amplitude para filtros digitais. Banda de transição: deseja-se a menor possível. Banda de rejeição: frequências bloqueadas. DOMÍNIO DA FREQUÊNCIA Resposta em frequência A figura abaixo mostra o processo de conversão filtro passa-baixa → filtro passa-alta. 1. mudar o sinal das amostras no kernel 2. adicionar 1 na amostra do centro da simetria. Assim … Passa-alta → Passa-baixa Passa-banda → Rejeita-banda Rejeita-banda → Passa-banda Por que as modificações no domínio do tempo indicadas, resultam em inversão no espectro de frequência ? δ[n]-h[n]: inverter sinal da resposta impulsiva e adicionar 1 no centro. Condição: as componentes de baixa frequência das saídas parciais (antes do somador) precisam estar em fase. Para isso deve-se: 1. filtro kernel original com fase linear 2. impulso adicionado no centro da simetria. Outro método: spectral reversal !! 1. mudar o sinal das amostras no kernel → multiplicar o filtro por sin(0,5t) → shift em fre_ quência de 0,5. A frequência 0 se torna 0,5. Ex.: Filtros passa-banda e rejeita-banda. Cascata: 2 estágios Convolução: 1 estágio Paralelo: 2 estágios Soma: 1 estágio Classificação de filtros Filtros Digitais Convolução Recursão FIR IIR Melhor desempenho Mais rápido Filtros Média Móvel Implementação por convolução, redução de ruído, implementação recursiva, passagens múltiplas. Implementação por Convolução 1 É feito uma média de um número de pontos do sinal da entrada x[], para produzir cada ponto do sinal de saída y[]: Ex.: O ponto 80 da saída, para um filtro média móvel com M=5 é dado por: 1. O filtro média móvel é uma convolução da entrada com um pulso retangular de área 1. Ex.: Filtro média móvel com M=4 Note que, • adição • subtração • multiplicação Redução de ruído versus Resposta ao degrau O filtro média móvel apresenta bom desempenho em muitas aplicações e ótimo desempenho na redução de ruído branco, ao mesmo tempo que preserva a resposta ao degrau. A quantidade de ruído reduzida é igual a raiz quadrada do número de pontos no filtro !! Resposta em frequência O filtro média móvel possui bom desempenho no domínio do tempo e mal desempenho no domínio da frequência. 1 1. Obtida pela transformada de Fourier do pulso retangular. Passagens múltiplas no filtro média móvel vezes. Consiste em passar o sinal de entrada pelo filtro duas ou mais Implementação recursiva É possível implementar um filtro média móvel com um algoritmo rápido. Lembre que a implementação por convolução é lenta !! Ex.: Seja um filtro média móvel com M=7. Dois pontos de saída adjacentes são calculados da seguinte forma: y [ 50 ] x [ 47 ] x [ 48 ] x [ 49 ] x [ 50 ] x [ 51 ] x [ 52 ] x [ 53 ] 7 y [ 51 ] x [ 48 ] x [ 49 ] x [ 50 ] x [ 51 ] x [ 52 ] x [ 53 ] x [ 54 ] 7 Uma vez que os pontos x[48]....x[53] aparecem em y[50] e y[51], a melhor maneira para calcular y[51] é y[51] y[50] 1 7 e assim sucessivamente. x[ 54 ] x[ 47 ] Depois que o primeiro ponto de y[] é calculado, todos os outros são determinados através de 1 soma e 1 subtração, por ponto: y [ i ] y [ i 1] 1 M onde , p ( M 1) / 2 q p 1 x[ i p ] x[ i q ] Simulação Implementar um filtro média móvel (recursivo ou não) para filtrar o seguin Gerada através do Matlab/Simulink ... Resultados Optou-se pelo recursivo. Abaixo algumas formas de onda: M=7 M=21 Note os picos do ruído filtrado e a tendênc de se tornar onda triangular com o aumen M ! Filtros Windowed-Sinc (Sinc Janelado) Estratégia do filtro, projeto, exemplos. Estratégia do filtro Sinc Janelado Características: • Bons para separar uma banda de frequência de outra • Pobre resposta no tempo (overshoot) • Pode ser programado por convolução (lento) ou por FFT (rápido) (Função Sinc) Problema: comprimento infinito e nunca cai à zero. Solução: Truncar em M+1 pontos (M par) e shiftar de M/2 (índices positivos). 1. Assunto que será visto. 1 Para suavizar o efeito do truncamento utiliza-se janelas: x = (Janela) FFT Janelas M=50 Blackman Hamming i 0 ... M Qual janela deve-se usar ? Blackman apresenta ainda ripple na banda de passagem de ~0,02%, enqua a Hamming de ~0,2%. Projeto do filtro Parâmetros de projeto: • Frequência de corte fC. Expressa como uma fração da frequência de amostragem, lo 0 ≤ fC ≤ 0,5 (teorema da amostragem) • Número de amostras M. Essa quantidade determina a largura da banda de transiçã M ≈ 4 / bw , onde 0 ≤ bw ≤ 0,5 bw = 0.2, 0.1 e 0.02 A fc não incluencia na forma da respost Após selecionado fc e M, o filtro pode ser calculado usando: onde K é selecionado de modo a garantir ganho unitário na frequência zero. Para evita divisão por zero, fazer h[M/2]=2fcK. Note que a equação acima possui: a função sinc, o shift M/2 e a janela Black Algumas respostas • A frequência da oscilação senoidal vale aproximadamente fC ; • Resposta no tempo ruim. Exemplos Um eletroencefalograma (EEG) é o resultado combinado de um número enorme de pulsos elétricos das células nervosas do cérebro. Em relaxamento, o EEG apresentará um padrão de oscilação entre 7 e 12Hz (estado alpha). Um pouco mais ativo, o padrão fica entre 17 e 20Hz (estado beta). COMO PODEMOS SEPARAR O SINAL ALPHA DO SINAL BETA ? SUPONHA UMA FREQUÊNCIA DE AMOSTRAGEM DE 100Hz. Solução: filtro passa-baixa com fc=14Hz (fc=0.14), bw=0.04 (logo M=100) e janela Hamming. Exemplos Projeto de um filtro passa-banda, onde o sinal que será filtrado será amostrado a 10kHz. O filtro terá na sua resposta em frequência uma banda de 80Hz de passagem do sinal centrada na frequência 2kHz. Assim, o filtro deverá bloquear frequência abaixo de 1960Hz e acima de 2040Hz. O filtro terá 50Hz de largura de banda de transição, e portanto, M=801. Etapas do projeto: 1. 2. 3. 4. Dois filtros passa-baixa com fc1=0.196 e fc2=0.204 ; O segundo filtro tem seu espectro invertido, tornando-se um passa-alta ; Soma-se ambos os filtros, resultando um rejeita-banda ; Outra inversão de espectro resulta em um passa-banda. Algoritmo para filtro passa-banda. Exemplos Deseja-se separar um sinal de 1mV que viaja numa linha de transmissão de 120V. Um filtro passa-baixa com banda de atenuação de -120dB no mínimo é necessário. Mas como foi visto, uma janela Blackman oferece somente -74dB. Solução Kernel h1 Kernel h2 Kernel h=h1*h2 Simulação Para implementar um sinal amostrado no simulink, pode-se utilizar o bloco hold. Na simulação abaixo, amostrou-se uma senóide de 60Hz com período de amost de 1ms. Adicionalmente, inserimos o bloco to worspace para trabalharmos futurame espaço de trabalho (workspace). Experimente o comando: plot(simout.time,simout.signals.values,'o') no worspace. Convolução Função delta, resposta ao impulso, algoritmo input side e output side. Função Delta e Resposta ao Impulso Convolução é uma operação matemática que combina dois sinais para forma terceiro. É importante pois relaciona três sinais de grande interesse, a saber: o sinal o sinal de saída e a resposta ao impulso. Conhecendo-se a resposta ao impulso h, é possível determinar a saída y para qual entrada x !! Algoritmo Input Side Esse método procura explicar a convolução do ponto de vista do sinal da en seja, explica como cada amostra da entrada contribui para formar as muitas amostr N=9 M=4 N+M-1=12 pontos Fundamento básico em DSP: 1. decompor a entrada 2. passá-la pelo sistema 3. sintetizar Ex.: Análise da amostra x[4]=1.4 Passo 1: 1.4[n-4] (impulso deslocado) Passo 2: 1.4h[n-4] (se a entrada é , então a saída é h) Passo 3: + + Note os símbolos em diamantes setados para zero !! É possível mostrar que a convolução é comutativa: x[n]*h[n] = h[n]*x[n] Programa em BASIC para o cálculo da convolução usando o algoritmo Input Side. Algoritmo Output Side Esse método procura explicar a convolução do ponto de vista do sinal da saída remos olhando as amostras da saída e verificando a contribuição dos pontos da entrada Lembre que y[n] = combinação de muitos valores entre entrada e resposta ao No presente método, veremos como calcular cada amostra da saída independe das outras amostras da saída. Ex.: Análise de y[6] y[6] y[6] = soma de todos os sextos pontos nas nove compon acima, ou seja, y[6]=x[3]h[3]+x[4]h[2]+x[5]h[1]+x[6]h[ Máquina de Convolução: um diagrama de fluxo de como ocorre a convolução. X[n] e y[n] são fixos, enquan h[n] é móvel para os lados ! Ex.: cálculo de y[0] e y[3] As amostras da saída bem da direita e as bem da esquerda estão baseadas em informações incompletas. Onde não existem amostras (note x[-3], x[-2] e x[-1]), colocar valor zero. Nesse caso diz-se que a resposta ao impulso h, não está totalmente imergida no sinal de entrada x. A definição formal da convolução enfim é dada por: A Transformada Discreta de Fourier - DFT Jean Baptiste Joseph Fourier afirmou que : todo sinal contínuo periódico poderia ser representado como uma soma apropriada de sinais senoidais. Por que usar senóides e não ondas triangulares ou quadradas? As senóides possuem a interessante característica de manter a sua forma após passarem por algum sistema. Apenas a amplitudes e fases são alteradas ! Existem 4 categorias associadas ao termo Transformada de Fourier, a saber: • Contínuo aperiódico: Ex.: Decaimento exponencial. A transformada é simplesmente chamada transformada de Fourier. • Contínuo periódico: Ex.: Senóides e onda quadrada. A transformada é chamada série de Fourier. • Discreto aperiódico: A transformada é chamada transformada de Fourier a tempo discreto. • Discreto periódico: É as vezes chamada de série de Fourier discreta, mas em geral é conhecida como transformada de Fourier discreta. Ex.: Decomposição de um sinal discreto aperiódico 16 pontos Cada sinal possui 16 pontos DFT real A entrada são amostras de um sinal qualquer (igualmente espaçadas), enquant saídas contém as amplitudes das componentes senoidais escaladas de uma forma que ve Re X[]: amplitudes cossenóide; Im X[]: amplitudes senóide. Usualmente N é escolhido de tal forma que seja potência de 2 (128, 256, 512, etc). O motivos são: 1. 2. Endereçamento binário da informação, logo a potência de 2 é o tamanho natural do sinal; O algoritmo mais usado para calcular a DFT, a FFT, opera sobre N. Variável independente no domínio da frequência Ex.: DFT com N=128. Eixo horizontal corresponde às amostras k. f k N Eixo horizontal como uma fração da frequência de amostragem. Ainda é possível usar (frequência natural), multiplicando por 2 o eixo do f. O range se portanto, de 0 a . Lembrar: SINAIS DISCRETOS APENAS CONTÉM FREQUÊNCIA ENTRE 0 E 0,5 DA FREQUÊNCI DE AMOSTRAGEM ! Funções base da DFT As função base da DFT (de amplitudes unitárias)são geradas a partir de: c k [ i ] cos( 2 k i / N ) armazenada s em Re X[k] s k [ i ] sin( 2 k i / N ) s em Im X[k] armazenada onde i 0 ... N - 1 e k determina (número a frequência de ciclos em N pontos do sinal). Ex.: Seja uma DFT com N=32. A seguir 8 componentes das 17 senóides e 17 cossenói usadas na DFT. . . . A DFT inversa De acordo com o que foi dito, podemos sintetizar a entrada como: Eqs. 1 onde, exceto Eqs. 2 Conclusão: Qualquer sinal x[i] com N pontos pode ser sintetizado, adicionando N/2+1 cossenóides e N/2+1 senóides. Programa em BASIC para o cálculo da transformada DFT inversa: Ex.: DFT inversa. função impulso A parte imaginária, não mostrada, é composta de zeros ! função constante Cálculo da DFT Os métodos são: 1. Equações simultâneas (pouco eficiente); 2. Correlação (consiste em detectar uma forma de onda conhecida em outro sinal); 3. FFT (decompõe uma DFT de N pontos em N DFTs, cada uma com um único ponto). Correlação Ex.: calcular ImX[3] de um sinal com N=64, ou seja, a amplitude da onda senoidal que completa 3 ciclos entre os pontos 0 e 63. Lembre que o resultado da DFT gera dois sinais, cada um com N/2+1 pont seja, 33 pontos na parte real e 33 pontos na parte imaginária, no exemplo Por correlação descobrimos que uma senóide que completa 3 ciclos entre as amostras 0 a 63 (note que é uma função base), está presente no exemplo 1 apenas, pois a soma das amostras em e) resulta em 32. Já em f) o resultado é zero. x x = = Equação de análise Assim, o cálculo da DFT consiste em correlacionar o sinal de entrada no tempo com cada função base. Ex.: Algoritmo em BASIC Forma Polar Tendo em vista que: , podemos escrever onde MagX[k] e PhaseX[k] armazenam a amplitude e a fase da cossenóide. Por que se utilizou a função cos ? Porque a função sin não podem representar a componente DC, pois o seno de frequência zero é composto todo de zeros. Ex.: Filtro passa-baixa. Ex.: Algoritmo para conversão. Incômodos do algoritmo: 1. Divisão por zero ; 2. Incorreto arctan ; 3. Fase de magnitudes muito pequenas (tendência de ficar randômica entre - e ) ; Bibliografia • S. W. Smith, Digital Signal Processing – a practical guide for engineers and scientists, 2003. USA.