Page 1

Projeto de Filtros Digitais FIR e IIR com o Matlab Everaldo Souto Salvador everaldo.salvador@ifpb.edu.br

RESUMO Filtros digitais são aplicados em processamento de sinais de voz e áudio entre inúmeras outras aplicações específicas que envolvem a analise de sinais e vídeo. São usados para executar operações seletivas de frequência. Para o projeto de filtros digitais são necessárias especiações no domínio da frequência em relação ao que se deseja em magnitude (amplitude) e resposta em fase do filtro com relação ao sinal a ser trabalhado. Filtros digitais são classificados quanto à sua resposta ao impulso em FIR (Finite Impulse Response) e IIR (Infinite Impulse Response). O MATLAB emerge como um instrumento fenomenal de construção e análise de filtros digitais, Ele já traz todas as funções de filtragem, inclusive, obviamente, os do tipo FIR e IIR que, suportado por bases teóricas sólidas, resulta em construções de protótipos. Uma fez testados, são vertidos para linguagens VHDL, Varilog ou similares, para a sua implantação física, ou lógica, ou ambas. A primeira experiência aqui relatada trouxe uma melhor visão prática dos filtros FIR e IIR e um contato mais próximo com o MATLAB em soluções proativas. Palavras-chave: filtros digitais, FIR, IIR, Matlab,

INTRODUÇÃO Filtros são dispositivos usados para executar funções de processamento de sinal, atenuando características indesejadas de uma frequência de um sinal de entrada ou ressaltar elementos desejados. Eles são largamente utilizados, por exemplo, em sistemas de sonorização quando se pretende selecionar a faixa desejável de áudio a ser reproduzida em um sistema, assim como o corte daquilo que incomoda, como ruídos e frequências espúrias. No mundo da aplicação médica ele pode ser utilizado no estudo de sinais de voz para análise de patologias, entre tantas aplicações. Os filtros digitais são classificados quanto à sua resposta ao impulso em: FIR (Finete Impulse Responde) e IIR (Infinite Impulse Response). O comportamento de um filtro 1


é analisado através da sua resposta de frequência através da transformada de Fourier e seus coeficientes.

FUNDAMENTAÇÃO TEÓRICA Um sistema linear invariante no tempo (LIT) também proporciona a filtragem entre os vários componentes de frequência. Um sistema LIT modifica o espectro do sinal de entrada X(ω) de acordo com a resposta de frequência H(ω) para se obter um sinal de saída cujo espectro será Y(ω) = H(ω)X(ω). Assim todo sistema LIT pode ser considerado como sendo filtro. Pela escolha apropriada de parâmetros podem-se projetar filtros seletivos que permitem a passagem de sinais desejados enquanto rejeitam outros, de acordo com a banda de frequência a ser trabalhada, conforme Ingle, 2000, p 330. A filtragem de sinais pode ser realizada digitalmente, conforme o diagrama a seguir:

Figura 1: processo de filtragem de um sinal analógico

O modulo A/D converte o sinal analógico x(t) em uma sequencia de pulsos x[n]. A saída do filtro digital resulta em uma nova sequencia y[n] que é convertida para um sinal de tempo contínuo no modulo D/A que finalmente, através de um filtro analógico do tipo passa baixas apresentará a versão filtrada do sinal x(t) de entrada. Os filtros digitais podem ser do tipo passa baixa, passa alta, passa faixa, rejeita faixa, passa tudo. Aqui o foco está nos filtros digitais implementados por software e hardware (firmware), especialmente implementados por ferramentas assistidas por computadores, do tipo MatLab.

FILTROS FIR Os filtros FIR (Finite Impulse Response) ou filtro de Resposta Finita ao Impulso é um tipo de filtro digital caracterizado por uma resposta ao impulso que se torna nula após um tempo finito. Eles têm as seguintes características: (a) são estáveis; (b) não usam realimentação, ou seja, não dependem de saídas passadas; (c) podem ter 2


fase linear; (d) podem ter fase mínima. A equação transferência do filtro FIR é dada pela seguinte equação: M

ak Z ( M − k ) ∑ = k=0

Y [z] X[ z]

H[z] =

ZM

que pode ser rescrita como uma função polinomial com potências negativas dentro do conceito de transformadas z. y[n] é dado por: M

y [ n ] =∑

k=0

bk a0

x[n-k]

Portanto, a resposta ao impulso de x[n] é δ[n]  y[n] = h[n] que é dado por: M

h [ n ]=∑ k=0

bk δ [n − k ] a0

onde M – Número de amostras; Os filtros digitais FIR têm as seguintes vantagens: (a) resposta em fase linear; (b) são fáceis de serem implementados; (c) são eficientes.

FILTROS IIR Os filtros digitais IIR (Infinite Impulse Response) com resposta de duração infinita ao impulso são dados pela seguinte função transferência. M

Y [z] X [ z]

H[z] =

=

∑ ak Z ( M − k ) k=0 N

∑ b j Z(N − j ) j=0

que pode ser igualmente reescrita formalmente através de transformadas z. No filtro IIR as características de entrada e saída são regidas por equações lineares de diferenças com coeficientes constantes de natureza recursiva. Os filtros IIR podem ser ou não estáveis. A saída de IIR para h[n] não é direta, mas depende das saídas anteriores conforme a expressão a seguir:

Y[n] =

1 a0

(

M

N

k=0

k=1

)

∑ bk x [n − k ] −∑ ak y [n − k ]

3


PROJETANDO FILTROS DIGITAIS O projeto de filtros digitais envolvem três passos, conforme Ingle, 2000, p.304: 

Especificações: determinada pela aplicação dos filtros. Elas são necessárias no domínio da frequência em termos de magnitude desejada e resposta em

fase do filtro; Aproximações: projeto do filtro especificamente para a faixa de frequência

que se deseja trabalhar; Implementações: é a transcrição do projeto para uma solução de hardware, ou software ou os dois combinados (firmware), utilizando a equação diferença, ou a função de transferência H(w) ou a resposta ao impulso h(n).

As especificações de magnitude são dadas de duas possíveis formas: absolutas e relativas, conforme as respectivas máscaras a seguir, conforme Ingle, 2000, p. 305:

Figura 2: máscara típica da especificação absoluta com as bandas de passagem, corte e transição.

Figura 3: máscara típica da especificação relativa com as bandas de passagem, corte e transição.

4


Levando-se em consideração a ambos as máscaras acima, valem as seguintes considerações:   

Banda passante: 1-δ1 ≤ |H(jw)| ≤ 1 + δ1, para 0 ≤ |W| ≤ Wp Banda de corte: |H(jw)| ≤ δ2, para |W| ≥ Ws Banda de transição: largura finita igual a W s – Wp

USANDO O MATLAB COMO FERRAMENTA Matlab é uma ferramenta interativa, com base em sistemas baseados em matriz, muito usada em visualização e computação numérica, usada em engenharia e outros ramos das ciências exatas (Ingle/Proakis 2000, p.5). Problemas numéricos complexos são resolvidos muito rapidamente se comparados a outros aplicativos de programação estruturada ou orientada a objetos, como Linguagem C, Linguagem C+ +, entre outras. Projetar filtros FIR ou IIR no Matlab é simples, desde que se conheçam as principais funções de manejo dos paramentos inicialmente definidos, como frequência e atenuação de corte, frequência e atenuação de rejeição e tipo de filtro (passa baixa no caso). Eis então as funções chaves do Matlab utilizadas para a comparação do desempenho de cada tipo de filtro:

Fdesign.lowpass (SPEC): o argumento SPEC considera, no caso, as frequências de corte, de rejeição, atenuação do sinal no corte e atenuação do sinal, na rejeição. As especificações levam ainda em consideração o parâmetro FIR ou, no caso, Butterworth, para o filtro tipo IIR, para este caso analisado.

Length (ARG): busca a ordem mínima para cada filtro analisado (num2str); Audioread (arquivo com extensão .wav): lê o arquivo de áudio, no caso, a gravação de uma frase, em francês (sinal obtido na Internet);

Sound reproduz o sinal lido, antes e depois de inserido em cada filtro, no sistema de reprodução de som do computador onde os filtros estão sendo analisados através do Matlab.

5


Outras funções de rotina são utilizadas para a apresentação gráfica, em tela, dos sinais de saída dos filtros FIR e IIR analisados, conforme a rotina habitual de programação de scripts em Matlab.

RESULTADOS OBTIDOS NO MATLAB Projetar filtros FIR ou IIR no Matlab é simples, desde que se conheça as principais

Volume

Sinal Original 2 1 0 -1 0.065

Volume

2

0.07

0.075

0.08 0.085 0.09 0.095 Tempo (segundos) Sinal filtrado com filtro FIR de ordem 64

0.1

Figura 4: sinal original, antes de cada filtro

0 -2

0

0.5

1

0

0.5

1

1.5

2 2.5 3 3.5 Tempo (segundos) Sinal filtrado com filtro IIR de ordem 14

4

4.5

5

4

4.5

5

Volume

2 0 -2

1.5

2 2.5 3 Tempo (segundos)

3.5

Figura 5: enquadramento do sinal na mascara conforme a figura 3

6


Espectro dos Filtros 0

Magnitude (dB)

-100 Filtro FIR Filtro IIR

-200

-300

-400

-500

0

5

10 Frequency (kHz)

15

20

Figura 6: espectro dos filtros FIR e IIR

Resposta em Fase dos Filtros 0

-200

Fase (graus)

-400

-600 Filtro FIR Filtro IIR

-800

-1000

-1200 0

5

10 Frequencia (kHz)

15

20

Figura 7: Grรกfico da Resposta em fase dos filtros FIR e IIR

7


Volume

Sinal Original 2 1 0 -1 0.065

0.07

0.075

0.08 0.085 0.09 0.095 Tempo (segundos) Sinal filtrado com filtro FIR de ordem 64

0.1

Volume

2 0 -2

0

0.5

1

0

0.5

1

1.5

2 2.5 3 3.5 Tempo (segundos) Sinal filtrado com filtro IIR de ordem 14

4

4.5

5

4

4.5

5

Volume

2 0 -2

1.5

2 2.5 3 Tempo (segundos)

3.5

Figura 8: comparação dos sinais de entrada e de saída por tipo de filtro

Figura 9: espectro do sinal de áudio por tipo de filtro

8


CONCLUSÕES Na implementação do filtro FIR não foi utilizado o método das janelas, que geraria um desdobramento deste artigo em maior profundidade. Utilizou-se a ordem mínima das amostragens, no caso, 64, para atender às especificações apresentadas. A figura 9 representa bem a diferença de desempenho de ambos os filtros digitais, relativamente ao sinal de entrada (figuras superpostas), no que o filtro IIR (Butterworth) apresentou melhor resultado em relação ao FIR, com a ordem de amostragem de apenas 14, na janela de rejeição do sinal onde o sinal é mais afetado pelo ruído. Portanto o filtro FIR precisa ter uma ordem bem maior comparado ao IIR, no que resulta em um maior custo de processamento. Pesa em favor dos filtros FIR os seguintes fatores: grandes valores de δ1 e pequenos valores de δ2 e grande largura da banda de transição, tomando-se como base as máscaras sugerida por Ingle/Proakis, conforme figuras 2 e 3. A figura 5 ressalta o ruído severo nas altas frequências (acima de 10 Khz). A figura 6 faz uma boa comparação dos comportamentos dos filtros FIR e IIR quanto à magnitude do sinal onde esse última tem um bom desempenho a partir de 5 KHz. O reapple apresentado pelos filtros FIR, em gral, são intrínsecos do sistema, o que obviamente o diferencia de uma situação ideal. Quanto à resposta de faze o filtro FIR apresenta um comportamento mais constante. Há de se registrar a importância do Matlab como poderosa ferramenta de implementação e análise de filtros digitais. O desafio inicial foi a tentativa de domínio dos principias recursos dessa fenomenal ferramenta baseada em computadores. Por fim, ficou patente a importância do entendimento da ferramenta Transformada Z como recurso interessante em análise de filtros digitais, um item sumamente importante em processamento de sinais digitais. Por fim, o recurso do MatLab FDAtool (Filter Design & Analysis Tool) do MATLAB emerge com outra ferramenta poderosa em análise de filtros FIR e IIR a ser explorada com veemência.

9


REFERÊNCIA Ingle, V.; Proakis, J.G., Digital Signal Processing Using Matlab, Brooks, 2012. 652p

BIBLIOGRAFIA CONSULTADA Gilt, Amos: MATLAB com aplicações em engenharia. - 4ª ed. - Porto Alegre: Bookman, 2012 Palm III, William J.: Introdução ao MATLAB para engenheiros. 3ª Ed, Porto Alegre: Bookman, 2013. 562p. Proakis, J.G.; Manolakis, Dimitris G.: Digital Signal Processing, Principles, Algorithms and Applications, - 3rd edn. - Prentice-Hall, 1996. 968p

SOBRE O AUTOR Everaldo Souto Salvador é graduado em Engenharia Elétrica pela Universidade Federal de Campina Grande, com 25 anos de experiência em telecomunicações (Bahia, Brasília e Paraíba), pós-graduado em Administração pela UFPB – Universidade Federal da Paraíba e Mestrando em Engenharia Elétrica pelo IFPB – Instituto Federal de Educação Ciência e Tecnologia da Paraíba. É professor efetivo em informática do IFPB, campus de João Pessoa. É ainda membro da Câmara de Engenharia Elétrica do CREA-PB.

10


ANEXO Script MATLAB Filtros FIR e IIR %% % Everaldo Salvador % close('all');clear('all');clc; % Lê o arquivo de audio com ruido % Em caso de erro, substitua a função audioread('frances_ruido.wav') pelo wavread('frances_ruido.wav') [sinal, frequencia_de_amostragem] = audioread('frances_ruido2.wav'); sinal = sinal * 2; % Cria o filtro % Especificações do Filtro Passa-Baixas frequencia_de_corte = 2000; % Frequência de corte em Hertz frequencia_de_rejeicao = 3000; % Frequência de Rejeição em Hertz atenuacao_da_freq_de_corte = 3; % Passband ripple in dB atenuacao_da_freq_de_rejeicao = 50; % Stopband attenuation in dB filtro_passa_baixa = fdesign.lowpass('Fp,Fst,Ap,Ast',frequencia_de_corte,frequencia_de_rejei cao,atenuacao_da_freq_de_corte,atenuacao_da_freq_de_rejeicao,frequ encia_de_amostragem); filtro_passa_baixa_fir = design(filtro_passa_baixa,'FIR'); filtro_passa_baixa_iir = design(filtro_passa_baixa,'butter'); disp('Filtro FIR: '); measure(filtro_passa_baixa_fir) ordem_fir = length(filtro_passa_baixa_fir.Numerator) disp(['Ordem mínima: ',num2str(ordem_fir)]); disp(' '); disp('-------------'); disp(' '); disp('Filtro IIR: '); measure(filtro_passa_baixa_iir) num_sessoes_filtro_iir = size(filtro_passa_baixa_iir.sosMatrix,1); ordem_iir = num_sessoes_filtro_iir * 2; if (filtro_passa_baixa_iir.sosMatrix(num_sessoes_filtro_iir,3) == 0) ordem_iir = ordem_iir - 1; 11


end disp(['Ordem mĂ­nima: ',num2str(ordem_iir)]); % Filtra os sinais sinal_fir = filter(filtro_passa_baixa_fir,sinal); sinal_iir = filter(filtro_passa_baixa_iir,sinal); % Reseleciona a figura de desenho e plota os resultados % Cria uma nova janela que irĂĄ representar o sinal grĂĄficamente no tempo figure('name','Sinal no tempo'); tempo = (1:length(sinal))./frequencia_de_amostragem; tempo_fir = (1:length(sinal_fir))./frequencia_de_amostragem; tempo_iir = (1:length(sinal_fir))./frequencia_de_amostragem; subplot(3,1,1); plot(tempo,sinal); ylabel('Volume'); xlabel('Tempo (segundos)'); title('Sinal Original'); subplot(3,1,2); plot(tempo_fir,sinal_fir); ylabel('Volume'); xlabel('Tempo (segundos)'); title(['Sinal filtrado com filtro FIR de ordem ',num2str(ordem_fir)]); subplot(3,1,3); plot(tempo_fir,sinal_iir); ylabel('Volume'); xlabel('Tempo (segundos)'); title(['Sinal filtrado com filtro IIR de ordem ',num2str(ordem_iir)]); % Analisa o Espectro TFAnaliseSinal = fvtool(sinal,1,sinal_fir,1,sinal_iir,1,'Fs',frequencia_de_amostragem); legend(TFAnaliseSinal,'Original','Com filtro FIR','Com filtro IIR'); title('Espectro do sinal de audio'); % Analisa os Filtros TFAnaliseFiltros = fvtool(filtro_passa_baixa_fir,filtro_passa_baixa_iir,'Fs',frequencia_de_am ostragem); legend(TFAnaliseFiltros,'Filtro FIR','Filtro IIR'); title('Espectro dos Filtros'); 12


% Toca o audio ruidoso disp('Reproduzindo audio original'); sound(sinal,frequencia_de_amostragem); pause(5); disp('Reproduzindo audio com filtro FIR'); sound(sinal_fir,frequencia_de_amostragem); pause(5); disp('Reproduzindo audio com filtro IIR'); sound(sinal_iir,frequencia_de_amostragem);

13

Profile for Everaldo Salvador

Projeto de filtros digitais fir e iir com o matlab  

Projetos de filtros digitais com o MATLAB

Projeto de filtros digitais fir e iir com o matlab  

Projetos de filtros digitais com o MATLAB

Advertisement