Baixe o app para aproveitar ainda mais
Prévia do material em texto
ENGENHARIA DE TELECOMUNICAÇÕES Filtros Digitais Gustavo Siebra Lopes Fortaleza - Ce 30 de Novembro de 2013 RESUMO Este trabalho apresenta um estudo em análise e projetos de filtros digitais de resposta finita (FIR) Passa Baixa com janela de Hamming, implementação do Filtro (IIR) Passa Baixa com aproximação de Butterworth e filtro Notch capaz de rejeitar uma faixa bastante estreita de frequências. O objetivo principal do projeto é comparar os resultados obtidos quando se usa estruturas FIR e IIR no áudio do tipo .wav que apresenta dois tipo de ruídos no qual as interferências devem ser eliminadas sobre o som da fala humana por meio de análise espectral do áudio e identificação dos componentes de frequência da fala humana e interferências. No desenvolvimento do projeto foram desenvolvidos programas computacionais para simulações dos filtros, empregando a plataforma MATLAB como ambiente de desenvolvimento. Palavras-chave: filtro digital, FIR, IIR, Notch, janela de Hamming 1. INTRODUÇÃO Tratando-se em comunicação de dados normalmente nos depararmos com ruído e interferência em um canal de comunicação. Ao receber uma transmissão em um receptor, é necessário que se trate o ruído antes de manipular a informação em si. O processo de tratamento do ruído pode ser feito utilizando-se de filtros digitais ou analógicos. Um filtro digital é um filtro que processa sinais digitais utilizando um conversor analógico-digital (ADC), digitaliza-se o sinal a filtrar, em seguida este é processado por algum tipo de processador, onde está programado o filtro digital. Para se obter de novo um sinal analógico já filtrado, coloca-se um conversor digital-analógico (DAC). Comparando filtros digitais e analógicos, podemos apontar várias vantagens e desvantagens de um ou de outro. Em geral, filtros analógicos são mais baratos, rápidos e possuem uma grande faixa dinâmica de amplitude e frequência. A durabilidade dos componentes electrónicos que constituem um filtro analógico é muito menor que a durabilidade do equipamento de aquisição e processamento de sinal que constitui o filtro digital, a relação sinal-ruído, SNR (signal-to-noise ratio), que é a relação entre a potência do sinal e a potência do ruído dos filtros digitais é muito maior e consegue-se facilmente implementar filtros de ordem elevada, maior facilidade de manipulação e modificação, pois sua implementação é por software/firmware. Já o analógico, em geral, é um circuito lógico com capacitores, indutores, resistores, diodos e transistores, que precisa de uma modificação física para fazer alguma alteração. Para que um filtro digital possa manipular dados, é necessária a conversão analógico/digital, ou seja, amostrar o sinal. A ideia básica desse projeto é abordarmos o uso de filtros digitais, caracterizando-os e em seguida aplicar filtros digitais em sinais impróprios para comunicação. 2. FUNDAMENTAÇÃO TEÓRICA Neste trabalho será dado destaque ao projeto de um filtro para a filtragem de um sinal do tipo .wav, que contém dois ruídos, uma sirene e um tom semelhante ao telefônico. Para os ruído foi utilizado os filtros com Resposta ao Impulso Infinita IIR, de Butterworth, filtro Notch e um filtro com Resposta ao Impulso Finita, FIR, Passa Baixa com janela Hamming. A seguir iremos fundamentar as teorias de filtro FIR, IIR e NOTCH, para posteriormente explicar e fundamentar as especificações do trabalho. 2.1 Filtro Notch É recomendado utilizar o filtro de Notch quando o sinal a ser atenuado é bem definido. Pelo fato de atuar em faixas reduzidas de frequências, esse tipo de filtro interfere pouco na qualidade do sinal e é do tipo IIR, pois apresenta polos e zeros e tem como característica principal bandas de transições rápidas procurando cortar o mais próximo possível de uma única frequência. Figura 1 – Resposta em Frequência do Filtro Notch de Segunda Ordem. Essa resposta em frequência (Figura 1) é obtida resolvendo a equação de transferência do Filtro Notch de Segunda Ordem dada a seguir: H[z] = K * (z² + 1)/(z² + r²) Numa primeira análise verificam-se as posições dos polos e zeros do sistema em estudo. Os zeros devem estar no círculo de raio unitário por questão de transmissão zero nesse ponto de frequência. Os polos devem estar posicionados próximos aos zeros da função de transferência, porque é desejado cancelar os efeitos dos dois zeros quando a função move-se para longe desses zeros. Logo, é usado polos do tipo “j*r”, com “r” < 1, por questão de estabilidade, e com isso, quanto mais próximos os polos estiverem dos zeros, mais rápida será a recuperação do ganho CC nos dois lados da banda de transição. Isto é, quanto mais próximo “r” estiver de 1. Diante disso, tem-se a seguinte análise matemática: H[z] = 1 para z = 1, logo: K = (1+r²)/2 (I) H[z] = (1 – 2*cos*(Ωc)*z + z²)/(1 - 2*cos(Ωc)*r*z + r²*z²) (II) 2.2 Filtros Fir Filtros do tipo FIR têm como características básicas a resposta ao impulso finita, natureza não recursiva, estabilidade BIBO (Bounded In, Bounded Out), fase linear e memória finita. O projeto desse tipo de filtro procura aproximar uma resposta ao impulso desejada e sua resposta ao impulso de ordem “M” corresponde à “M+1” coeficientes deste filtro, portanto o projeto significa, na prática, escolher de modo a ajustar sua resposta em frequência ao que se deseja. Figura 2 – Estrutura Geral de um Filtro FIR. Dentre os projetos de filtros FIR, tem-se o método das janelas, o método interativo de projeto ótimo (Remez Multiple Exchange) e amostragem por resposta em frequência. Neste trabalho adotou-se o método das janelas. Esse método consiste numa resposta em frequência decorrente de um filtro ideal, mas como este possui resposta em frequência infinita, multiplica-se esta resposta por uma janela, um sinal finito, de modo a produzir uma resposta em frequência finita. Dois fatores básicos nessa operação são: a convolução no domínio da frequência e o chamado efeito de Gibbs. Esse último é causado pela operação de convolução no domínio da frequência, posto que esta operação causa oscilações nas regiões de transição. O fenômeno de Gibbs pode ser suavizado com o uso de certas janelas, retangular, triangular, hamming, hanning, por exemplo, a janela usada nesse trabalho será a janela de Hamming, pois esta janela possui a menor magnitude do lóbulo para uma dada largura de lóbulo principal. Essa janela é geralmente a mais utilizada como janela de uso geral, pois tem uma atenuação razoável. Figura 3 – Resposta em Frequência do Filtro FIR de Ordem 100. 2.3 Filtros Iir Filtros do tipo IIR têm como características a resposta ao impulso infinita, apresentam distorção linear de fase, entrada e saída são regidas por equações lineares de diferenças com coeficientes constantes de natureza recursiva (Figura 4) e apresentam uma dada resposta ao impulso usando uma ordem menor comparado a um filtro FIR. Figura 4 – Estrutura Geral de um Filtro IIR. O projeto desse filtro é feito com base num protótipo analógico. Tal protótipo utiliza uma função de aproximação para uma resposta em frequência desejada. Entre essas aproximações destacam-se os filtros de Butterworth, Chebyshev tipo 1 e tipo 2 e a Elíptica. No presente trabalho é utilizada a aproximação Butterworth, este filtro apresenta um pequeno ripple, praticamente inexistente, na banda de passagem e na banda de corte. Essa aproximação é regida pelo protótipo analógico: Figura 5 – Resposta Quadrática de Magnitude de um Filtro Passa Baixa de Butterworth. O cálculo da ordem desse filtro é dado pela equação: Figura 6 – Equação da Ordem de um Filtro Passa Baixa de Butterworth.Onde: Rp é o ripple na banda de passagem em dB; As é o ripple na banda de transição em dB; Ωp é o ponto de corte na banda de passagem; Ωs é o ponto de corte na banda de corte. Através desses parâmetros, a equação da ordem e resposta quadrática de magnitude, o filtro Passa Baixa Butterworth foi adotado nesse trabalho. Figura 7 – Resposta em Frequência do Filtro IIR com Aproximação de Butterworth de Ordem 10. 3 METODOLOGIA A metodologia do trabalho foi feita através de pesquisa bibliográfica para fazer o cálculo da ordem, resposta em frequência e ao impulso, como também da filtragem do sinal por meio do software de simulação numérica MATLAB (MATrix LABoratory). 3.1 Filtrando Sinal com Filtro NOTCH O sinal em questão consiste no áudio de fala com um ruído da sirene e um tom, onde esse tom assemelha-se a um tom telefônico. Como base para o projeto do filtro é analisado a priori a resposta em frequência. Figura 8 – Espectro de Frequência do Sinal Diante desse espectro de frequências do sinal, nota-se que a frequência do ruído é de 200 Hertz, portanto um filtro que remova essa faixa de frequência funcionará perfeitamente no modelo apresentado. Daí o uso do Filtro Notch para esse sinal. Dois fatores importantes no uso desse filtro são a resolução da equação II do tópico 2.3 e a determinação da frequência de corte mostrada a seguir: Ωc = (2*π*fc)/Fs Onde: Ωc é a frequência de corte discreta; fc e a frequência de corte contínua; Fs é a frequência de amostragem. Para a resolução da equação de determinação do “r” foi feita uma rotina em MATLAB para o cálculo desses valores (Anexo 5.5) e verificou-se que o valor de “r” é 0.9926. A resposta em frequência do filtro está apresentada na Figura 7. Após a operação de filtragem é obtido o seguinte espectro de frequência: Figura 9 – Espectro de Frequência do Sinal Filtrado Notch. Conforme o esperado, o espectro correspondente ao ruído foi eliminado causando o mínimo de perdas e distorções nas componentes de sua vizinhança. 3.2 Filtrando Sinal com Filtro FIR Tomando a figura 9 como base, projetou-se um filtro FIR para filtragem desse sinal. Nota-se que a voz concentra-se nas componentes de baixas frequências, isto é, até cerca de mil (1000) Hertz. Portanto será usado um filtro Passa Baixa com essa mesma frequência. Figura 10 – Diagrama de Blocos do Filtro FIR ordem 100 Lembrando que o filtro FIR precisa de uma janela para efetivar os cálculos no domínio da frequência e neste trabalho foi adotada a janela de Hamming. Essa janela é descrita pela equação a seguir: W[n] = 0.54 – 0.46 * cos(2π*n/M); Com “n” variando de zero (0) até a ordem do filtro (M) e zero (0) para os valores acima de M. Essa janela deixa o filtro com ripple em torno de 41 dB, valor comumente encontrado em livros e em outros trabalhos. O filtro projetado tem seu cálculo realizado no Anexo 5.2. e a resposta em frequência encontra-se na Figura 3. A ordem do filtro foi determinada empiricamente, pois na literatura não deixa claro um método único e/ou unânime para o cálculo da ordem desse tipo de filtro. Figura 11 – Espectro de Frequência do Sinal Filtrado por um Filtro FIR Passa Baixa com janela de Hamming de Ordem 100. Diante da figura acima o sinal foi filtrado satisfatoriamente causando apenas uma distorção na voz original, deixando um pouco mais grave. 3.3 Filtrando Sinal com Filtro IIR Tomando como base a mesma Figura 9, do tópico anterior, agora sendo implementado um filtro IIR com aproximação de Butterworth, cuja resposta em frequência encontra-se na Figura 7. A ordem desse filtro foi determinada pela equação descrita na figura 6. Para o cálculo da ordem foi desenvolvida uma rotina em MATLAB no qual resolve-se a equação e a compara com o resultado da função buttord presente neste software, e por meio da função é achado os coeficientes do filtro de acordo com a tabela abaixo. INDICE NUMERADOR DENOMINADOR 1 1 1,48E-09 2 -8,17886781 1,48E-08 3 30,24273499 6,65E-08 4 -66,55816036 1,77E-07 5 96,52414693 3,10E-07 6 -96,36074449 3,72E-07 7 67,05012262 3,10E-07 8 -32,10406358 1,77E-07 9 10,12126913 6,65E-08 10 -1,896903059 1,48E-08 11 0,160467122 1,48E-09 Tabela 1 – Coeficientes do Filtro FIR Com os coeficientes da tabela acima é feita a montagem do diagrama de blocos do filtro IIR. Figura 12 – Diagrama de Blocos do Filtro IIR de ordem 10 No Anexo 5.5 deste trabalho temos a rotina e precisa-se atentar para a questão dos arredondamentos, pois o buttord arredonda o inteiro próximo menor e na prática arredondamos para o inteiro próximo maior, em virtude das perdas serem menor adotando o critério de arredondamento “para cima”. A seguir o espectro do sinal filtrado pelo filtro de Butterworth: Figura 13 – Espectro de Frequência do Sinal Filtrado por um Filtro IIR Passa Baixa com aproximação de Butterworth de Ordem 10. Por fim, nota-se que obtemos um resultado semelhante ao do filtro FIR, porém com uma ordem dez (10) vezes menor para a mesma frequência de corte. O mesmo efeito de distorção é observado nesse modelo. 4 CONCLUSÃO Nesse projeto foi colocado em prática o conhecimento de filtros digitais acumulado em sala de aula, fazendo a comparação sobre qual filtro é melhor verificou-se que o Filtro IIR obteve um comportamento melhor, porque foi obtido o mesmo resultado com uma ordem dez vezes menor em relação ao Filtro FIR que para conseguir cortes agressivos de frequência precisa ter ordens muito elevadas, normalmente ordens maiores que 100, ou seja, determinar 100 coeficientes pode ser bastante complexo. O Filtro Notch, comportou-se satisfatoriamente para a aplicação ao qual foi destinado. A implementação de filtros digitais facilita a tarefa de filtragem de um sinal, pois os parâmetros são fáceis de serem modificados, podendo adequar-se o filtro ao sinal com menor dificuldade do que em um filtro analógico. 5 ANEXOS 5.1 Análise e Filtragem do Sinal usando Filtro Notch %Instituto Federal de Educação, Ciência e Tecnologia do Ceará %Disciplina: Filtros Digitais %ALUNO: GUSTAVO SIEBRA %-------------------------------------------------------------------------- % Implementação do Filtro Notch %-------------------------------------------------------------------------- clear all %limpa todas as variáveis do workspace close all %fecha todas as janelas abertas clc %limpa a tela de prompt % Ler um arquivo no formato wav [x,Fs,Nbit] = wavread('C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\356312-fala_sirene_tm'); %x; É o conjunto de dados amostrados %Nbit; Número de bits por amostra %Fs; Frequência de amostragem n = length(x); %Armeza o tamanho do vetor x i = [0:1:n-1]; %Vetor variando de 0 a 110033 com passo 1 f = 0:Fs/n:Fs; %Vetor de freqências f = f(1:end-1); figure, plot(x); X= abs(fft(x)); %transformada de Fourier dos valores das amostras do sinal(x) subplot(1,1,1), plot(f(1:n/2), X(1:n/2)); title('Espectro de Frequência do Sinal'); fc = 200; %Frequencia a ser eliminada r = 0.9926; %coeficiente para regulação wc = (2*pi*fc)/Fs; %Conversao da frequencia de corte do tempo continuo para discreto num = [1 -2*cos(wc) 1]; %Coeficientes do numerador do filtro den = [1 -2*r*cos(wc) r^2]; %Coeficientes do denominador do filtro [H,W] = freqz(num, den, 1024); %Resposta em Frequencia do Filtro Notch hold on; plot(W*(Fs/(2*pi)), abs(H*6000), 'r'); %Resposta em frequência do filtro Notch title('Resposta em frequência do filtro Notch'); c = filter (num, den, x); Y = abs(fft(c)); figure, plot(f(1:n/2),Y(1:n/2)); title('Espectro de Frequência do Sinal Filtrado Notch '); % Resposta ao impulso do filtro NOTCH [I,T] = impz(den,num); % Calculo da resposta ao impulso do filtro notch figure, plot(T,abs(I),'LineWidth',0.5); % Resposta ao impulso do filtro notch xlabel('Tempo [n]') ylabel('h[n]') h = legend('Filtro Notch'); title('Resposta ao impulso do filtro NOTCH'); Figura 14 – Resposta ao Impulso do filtro Notch %Salvando Sinal Filtrado wavwrite(c,Fs,Nbit,'C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_notch.wav'); %wavplay(c, Fs); %toca o sinal filtrado 5.2 Análise e Filtragem do Sinal usando Filtro FIR %Instituto Federal de Educação, Ciência e Tecnologia do Ceará %Disciplina: Filtros Digitais %ALUNO: GUSTAVO SIEBRA %-------------------------------------------------------------------------- % Implementação do Filtro FIR % Passa Baixa com janela de Hamming %-------------------------------------------------------------------------- close all %fecha todas as janelas abertas clear all %limpa todas as variáveis do workspace clc %limpa a tela de prompt %Analisando o sinal a ser filtrado [x,Fs,Nbit] = wavread('C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_notch.wav'); %x; É o conjunto de dados amostrados %Nbit; Número de bits por amostra %Fs; Frequência de amostragem n = length(x); %tamanho do vetor de amostras i = [0:1:n-1]; %vetor de indices alfa = Fs/(n-1); %fator de conversao: Indices ~ Frequencia em Hz f = i .* (alfa); %vetor de frequencias em Hz beta = (2 * pi)/(Fs); fw = f .* beta; %vetor de frequencias discretas X= abs(fft(x)); %espectro de frequencia do sinal de audio figure, plot(i, x); %Plotando com eixo dos indices da fft title('Eixo dos indices da FFT'); figure, plot(f(1:n/2), X(1:n/2)); %Plotando com eixo de frequencias em Hz title('Eixo de Freq. em Hz'); figure, plot(fw(1:n/2), X(1:n/2)); %grafico do espectro do sinal de audio title('Espectro do sinal de audio'); %Projetando o filtro FIR fc = 1000*(2/Fs); %Frequencia de corte wc = [fc]; %Frequencia de corte discreta normalizada num = fir1(100, wc, 'low'); %filtro FIR Passa Baixa com Janela Hamming de ordem 100 %Resposta em frequência do filtro [H, w]= freqz(num, 1); %filtros fir não tem zeros. subplot(1,1,1), plot(w*(Fs/(2*pi)), abs(H*6000), 'r'); %Resposta em frequência FIR title('Resposta em frequência FIR'); y = filter(num, 1, x); Y = abs(fft(y)); %Resposta em frequencia do sinal filtrado figure, plot (f(1:n/2), Y(1:n/2)); title('Resposta em frequencia do sinal filtrado FIR') % Resposta ao impulso do filtro FIR [I,T] = impz(num,1); % Calculo da resposta ao impulso do filtro FIR figure; % Resposta ao impulso do filtro FIR plot(T,abs(I),'LineWidth',0.5); xlabel('Tempo [n]') ylabel('h[n]') h = legend('Filtro FIR'); title('Resposta ao impulso do filtro FIR'); Figura 15 – Resposta ao Impulso do filtro FIR %Salvando Sinal Filtrado wavwrite(y,Fs,Nbit,'C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_fir.wav'); [z, Fa, Nbitsa] = wavread('C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_fir.wav'); a = 2*z; %aumenta o "volume" do sinal %wavplay(a, Fs); %tocar sinal filtrado 5.3 Análise e Filtragem do Sinal usando Filtro IIR %Instituto Federal de Educação, Ciência e Tecnologia do Ceará %Disciplina: Filtros Digitais %ALUNO: GUSTAVO SIEBRA %-------------------------------------------------------------------------- % Implementação do Filtro IIR % Passa Baixa com aproximação de Butterworth %-------------------------------------------------------------------------- close all %fecha todas as janelas abertas clear all %limpa todas as variáveis do workspace clc %limpa a tela de prompt %Analisando o sinal a ser filtrado [x,Fs,Nbit] = wavread('C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_notch.wav'); %x; É o conjunto de dados amostrados %Nbit; Número de bits por amostra %Fs; Frequência de amostragem n = length(x); %tamanho do vetor de amostras i = [0:1:n-1]; %vetor de indices alfa = Fs/(n-1); %fator de conversao: Indices ~ Frequencia em Hz f = i .* (alfa); %vetor de frequencias em Hz beta = (2 * pi)/(Fs); fw = f .* beta; %vetor de frequencias discretas X= abs(fft(x)); %espectro de frequencia do sinal de audio figure, plot(i, x); %Plotando com eixo dos indices da fft title('Eixo dos indices da FFT'); figure, plot(f(1:n/2), X(1:n/2)); %Plotando com eixo de frequencias em Hz title('Eixo de Freq. em Hz'); hold on plot(fw(1:n/2), X(1:n/2)); %grafico do espectro do sinal de audio %Projetando o filtro IIR fc = 1000*(2/Fs); %Frequencia de corte wc = [fc]; %Frequencia de corte discreta normalizada %Filtro de Butterworth Passa Baixa de Decima Ordem %Resposta em frequência do filtro [den, num] = butter(10, wc, 'low'); %ordem do filtro determinado pelo projeto do filtro. [H, w]= freqz(den, num, 1024); %Resposta em frequência do filtro subplot(1,1,1), plot(w*(Fs/(2*pi)), abs(H*6000), 'r'); %Resposta em frequência IIR title('Resposta em frequência IIR'); y = filter(den,num,x); %filtrando o sinal Y = abs(fft(y)); %Resposta em frequencia do sinal filtrado figure, plot (f(1:n/2), Y(1:n/2)); title('Resposta em frequencia do sinal filtrado IIR'); % Resposta ao impulso do filtro IIR [I,T] = impz(den, num); % Calculo da resposta ao impulso do filtro IIR figure; % Resposta ao impulso do filtro IIR plot(T,abs(I),'LineWidth',0.5); xlabel('Tempo [n]') ylabel('h[n]') h = legend('Filtro IIR'); title('Resposta ao impulso do filtro IIR'); Figura 16 – Resposta ao Impulso do filtro IIR %Salvando Sinal Filtrado wavwrite(y,Fs,Nbit,'C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_iir.wav'); [z, Fa, Nbitsa] = wavread('C:\Users\Ibyte\Dropbox\[IFCE] Instituto Federal do Ceara\Filtros Digitais\Trabalho Gustavo\Trabalho Final\teste_fala_iir.wav'); a = (2)*z; %aumenta o "volume" do sinal. %wavplay(a, Fs); % tocar o sinal filtrado 5.4 Projeto do Filtro Notch %Instituto Federal de Educação, Ciência e Tecnologia do Ceará %Disciplina: Filtros Digitais %ALUNO: GUSTAVO SIEBRA %-------------------------------------------------------------------------- % Projeot do Filtro Notch %-------------------------------------------------------------------------- close all %fecha todas as janelas abertas clear all %limpa todas as variáveis do workspace clc %limpa a tela de prompt %Rotina para Análise do Filtro de Notch clear all %limpa todas as variáveis do workspace close all %fecha todas as janelas abertas clc %limpa a tela de prompt %Projeto do Filtro fc = 200;%frequencia a ser eliminada Fs = 22050;%Tirado a partir do sinal lido do wavread wc = (2*pi*fc)/Fs;%conversao da frequencia de corte do tempo continuo para discreto hz = [1 -1.9926 0.9926];%resposta em frequencia para H[1] = 1, isto é, z = 1 <-> H[z] = 1 r = roots(hz);%coeficiente ajustado para melhor resolução r = r'; num = [1 -2*cos(wc) 1];%coeficientes do numerador do filtro den1 = [1 -2*r(1)*cos(wc) r(1).^2];%coeficientesdo denominador do filtro den2 = [1 -2*r(2)*cos(wc) r(2).^2];%coeficientes do denominador do filtro %Analise da Resposta em Frequencia do Filtro [H1, w1] = freqz(num, den1, 1024);%Resposta em Frequencia do Filtro [H2, w2] = freqz(num, den2, 1024);%Resposta em Frequencia do Filtro plot(w1, abs(H1)); hold on plot(w2, abs(H2), 'k'); 5.5 Projeto de Filtro IIR Passa Baixa com Aproximação de Butterworth %Instituto Federal de Educação, Ciência e Tecnologia do Ceará %Disciplina: Filtros Digitais %ALUNO: GUSTAVO SIEBRA %-------------------------------------------------------------------------- % Calculando a frequência de corte mínima do filtro de Butterworth %-------------------------------------------------------------------------- close all %fecha todas as janelas abertas clear all %limpa todas as variáveis do workspace clc %limpa a tela de prompt %parametros do filtro fs = 22050; %frequencia de amostragem do sinal. fc1 = 1000; %frequencia de corte. wc = fc1*(2/fs);%frequencia de corte normalizada. e = 10; %ripple de 10 dB na banda de passagem. A = 40; %ripple de 40 dB na banda de corte. As = -10*log10(1/(A^2)); %calculo do ripple na banda de corte em dB. Rp = -10*log10(1/(1+(e^2))); %calculo do ripple na banda de passagem em dB. wp = (2*pi*1000)/fs; %ponto de corte na banda de passagem. ws = (2*pi*1150)/fs; %ponto de corte na banda de corte. p1 = (10^(Rp/10) - 1); %parcela 1 p2 = (10^(As/10) - 1); %parcela 2 p3 = (2*(log10(wp/ws))); %parcela 3 N = (log10(p1/p2)/p3); %Calculo da ordem do filtro. [n, wn] = buttord(wp, ws, Rp, As); %função que retorna a ordem do filtro. o = ceil(N); %arredonda para o inteiro superior mais proximo. oi = ceil(n) + 1; %arredonda para o inteiro superior mais proximo. if o == oi [b, a] = butter(o, wc); [H, w]= freqz(b, a, 1024); figure, plot(w, abs(H)); end 6 Referências Chapman, S. J. Programação em Matlab para Engenheiros. São Paulo: Thomson, 2006. Hanselman, D. Matlab 6 Curso Completo. São Paulo: Prentice Hall, 2007. Haykin, S.; Veen, B. V. Sinais e Sistemas. Porto Alegre: Bookman, 2001. Lathi, B. P. Sinais e Sistemas Lineares. Porto Alegre: Bookman, 2004. Mello, C. A. Processamento Digitais de Sinais. Pernambuco: Centro de Informática, UFPE, 2011.
Compartilhar