Buscar

Relatório filtragem de sinais no Matlab

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

FAINOR – FACULDADE INDEPENDENTE DO NORDESTE
RODRIGO BORGES DE OLIVEIRA
Relatório filtragem de sinais utilizando o Matlab
VITÓRIA DA CONQUISTA
2015
Rodrigo Borges de Oliveira
Relatório filtragem de sinais utilizando o Matlab
Trabalho desenvolvido durante a disciplina de Processamento
Digital de Sinais, como parte da avaliação referente à III
unidade do 7º semestre de Engenharia da Computação da
FAINOR.
Professor: Charles Miranda Fróes
VITÓRIA DA CONQUISTA
2015 
Sumário
1 INTRODUÇÃO.......................................................................................................................3
2 OBJETIVO..............................................................................................................................3
3 DESENVOLVIMENTO DO PROJETO...................................................................................4
4 RESULTADOS.......................................................................................................................7
5 CONCLUSÃO........................................................................................................................8
REFERÊNCIA.............................................................................................................................9
APÊNDICE................................................................................................................................10
1 INTRODUÇÃO
Estudos sobre sinais são geralmente feitos com base em sinais ideais, ou seja,
sem interferências de outros sinais. Porém os sinais naturais, que são os encontrados e
capturados na natureza, possuem diversos sinais de interferência, o que dificulta
trabalhar com eles. Portanto, torna-se necessário o uso de filtros que são responsáveis
por eliminar os sinais de interferência que são indesejados para o estudo daquele sinal
em que deseja-se trabalhar.
Existem dois tipos de filtros digitais para utilizar no tratamento destes sinais. São
eles o Filtro de Reposta ao Impulso Finito (FIR) e o Filtro de Resposta ao Impulso
Infinito (IIR). Estes filtros se baseiam nos filtros analógicos, que podem ser:
• Filtro passa-baixa: deixa passar baixas e rejeita frequências altas.
• Filtro passa-alta: deixa passar frequências altas e rejeita baixas frequências.
• Filtro passa-faixa: deixa passar frequências dentro de uma faixa de frequências e
atenua frequências fora desta faixa.
• Filtro rejeita-faixa: deixa passar frequências fora de uma faixa e rejeita
frequências dentro desta faixa.
Os filtros devem ser escolhidos pelo projetista de acordo com a sua necessidade
de quais frequências deseja no seu sinal. 
2 OBJETIVO
Este trabalho tem como objetivo utilizar os conhecimentos de filtros digitais e
projetar um filtro digital no Matlab para remover ruídos/sons indesejados de arquivos de
áudio, e de um sinal com frequências de 200 Hz e 800 Hz misturadas. Os filtros digitais
projetados neste trabalho foram do tipo FIR passa-baixa.
Neste projeto, dois áudios foram filtrados para efeito de comparação dos
resultados. Um áudio possuindo uma voz e uma sacola sendo reproduzidos
 3
separadamente, e outro áudio possuindo esta mesma voz e sacola, porém sendo
reproduzidos ao mesmo tempo, ou seja, os dois sons um “em cima” do outro.
Posteriormente, foram criados dois sinais separados, um possuindo uma
frequência de 200 Hz e outro uma frequência de 800 Hz. Os dois sinais foram somados
para que ambos ficassem presentes em um mesmo sinal. Após isso, filtrou-se este sinal
somado, removendo as frequências acima de 200 Hz, ou seja, removeu-se a frequência
de 800 Hz.
3 DESENVOLVIMENTO DO PROJETO
Primeiramente, como se trata de um arquivo de áudio com voz, foi utilizada a
frequência de amostragem de 44100 Hz ou 44,1 KHz. Utilizando o Matlab, ela foi
chamada de fs. Os áudios foram atribuídos às variáveis utilizando a função wavread.
Em seguida, o gráfico no domínio do tempo referente a esse áudio foi plotado
utilizando a função plot. Porém o domínio do tempo não é muito importante para a
análise deste sinal, logo, obteve-se o gráfico no domínio da frequência, referente a este
áudio, através da transformada rápida de Fourier (FFT).
Com a análise do gráfico no domínio da frequência, percebe-se então quais
frequências devem ser eliminadas. No caso dos áudios utilizados neste projeto,
frequências acima de 800 Hz já começaram a se tornar indesejáveis. Porém, os ruídos
indesejáveis ainda estão presentes abaixo de 800 Hz, mas são bem menos
perceptíveis. Apesar disso, foi utilizada a frequência de 800 Hz como frequência de
passagem (fpass), pois escolher uma frequência inferior a esta, acarretaria em uma
grande perda de qualidade na voz. Ainda analisando o gráfico no domínio da
frequência, observou-se que a frequência de parada (fstop) seria ideal em 1000 Hz.
Vale ressaltar, que tanto a frequência de passagem quanto a de parada são obtidas
através de especulação, e tentativa e erro.
Definindo-se a frequência de passagem e de parada, é possível obter os outros
parâmetros necessários para a filtragem da voz. As frequências angulares relacionadas
 4
às frequências de passagem e parada são, respectivamente, w p=
f pass∗π
f s
2
e
w s=
f stop∗π
f s
2
. E através destas, pode-se obter a frequência de transição, que é a faixa
entre a frequência de passagem e a de parada, e também a frequência de corte (ou de
canto), que é a frequência intermediária a essas outras duas. Logo, a frequência de
transição é definida por w t=ws−wp , e a de corte por w c=
(wp+ws)
2
.
O comprimento do filtro é definido, de acordo com a janela escolhida, seguindo a
seguinte tabela:
Nome da Janela Comprimento de
Transição (wt)
Aproximado
Comprimento de
Transição (wt) 
Exato
Menor atenuação
da banda de
parada 
Retangular 4∗π
M
1,8∗π
M
21 dB
Barlett 8∗π
M
6,1∗π
M
25 dB
Hanning 8∗π
M
6,2∗π
M
44 dB
Hamming 8∗π
M
6,6∗π
M
53 dB
Blackman 12∗π
M
11∗π
M
74 dB
 5
Para este trabalho, utilizou-se a janela Hanning, portanto o comprimento do filtro
foi definido como M=6,2∗π
wt
+1 . Através do comprimento do filtro, cria-se a janela
utilizando-se a função hann. Em seguida, foi feita uma multiplicação, em forma de
convolução, da janela com a voz original. O resultado da convolução, é a voz já filtrada.
A partir da voz filtrada, plotou-se o gráfico no domínio do tempo utilizando a função plot
e no domínio da frequência utilizando a FFT, o que permite que uma comparação com
os gráficos da voz original seja feita.
Todo este processo de filtragem de voz foi realizado duas vezes, uma para o
áudio da voz com a sacola separados, e outro para o áudio da voz com a sacola juntos
(um “em cima” do outro).
Utilizando a função wavplay do matlab, pode-se escutar tanto os áudios originais,
quanto os áudios filtrados. Sendo importante para notar os resultados e compará-los
com os áudios de origem. Para utilizar esta função, basta passar como parâmetros para
o wavplay, o nome da variável onde está guardado o áudio e a frequência de
amostragem.
Para a filtragem da soma dos sinais de 200 Hz e 800 Hz, teve-se que primeiro
criar sinais separados de 200 Hz e 800 Hz. A frequência de amostragem deve ser
definida como sendo pelo menos 4 vezes o valor do maior sinal. Para este caso, a
frequência de amostragem foi então 4 vezes 800 Hz, ou seja, 3200 Hz. Como o período
equivale ao inverso da frequência de amostragem, foi definido T s=
1
fs
. E para definir
o espaçamento do tempo para a plotagem dos gráficos no domínio do tempo, utilizou-se a expressão t = [0:Ts:3], informando que o tempo variará de 0 a 3 segundos com um
incremento igual ao valor do período.
Foi necessário criar os sinais de 200 Hz e 800 Hz separadamente. Foi-se
atribuído, então, f1 como 200 e f2 como 800. Gerou-se duas senoides distintas, uma
 6
para cada sinal. Para o sinal de 200 Hz criou-se s1 = 2*sin(2*pi*f1*t) e para o sinal de
800 Hz, s2 = 4*sin(2*pi*f2*t). Tendo estas senoides, plotou-se os gráficos no domínio do
tempo, através da função plot, e os gráficos no domínio da frequência através da
transformada de Fourier, utilizando a função fft.
Entretanto o projeto trata-se de filtrar sinais que já estão misturados. Portanto, a
senoide de cada sinal foi somada, definindo s = s1 + s2, obtendo-se então, o sinal
resultante da mistura dos outros dois sinais. A partir deste novo sinal, plotou-se
novamente os gráficos no domínio do tempo e no domínio da frequência. Através
destes, é possível observar as frequências de 200 e 800 Hz em um mesmo sinal.
Assim como na filtragem dos áudios, foi necessário definir as frequências de
passagem e parada. Como o objetivo era eliminar as frequências acima de 200 Hz, que
neste caso seria eliminar apenas a frequência de 800 Hz, definiu-se a frequência de
passagem como 250 Hz e a de parada como 750 Hz.
Os mesmos processos foram realizados para a criação da janela Hann, que foi
posteriormente multiplicada, em forma de convolução, com o sinal senoidal da soma
(sinal s). Através da convolução, obteve-se o sinal filtrado. Este sinal foi plotado no
domínio do tempo e no domínio da frequência, utilizando, respectivamente, as funções,
plot e fft.
4 RESULTADOS
Os resultados foram bastante satisfatórios. Os ruídos indesejáveis nos sinais de
áudio foram praticamente eliminados, ficando apenas um pequeno ruído, porém com
volume bem baixo. Além disso, o som da voz não perdeu muita qualidade, mantendo
uma claridade para compreensão da mesma.
Na soma do sinal de 200 Hz e 800 Hz, pôde-se eliminar totalmente o ruído de
800 Hz. Como não se trata de um sinal de áudio, o resultado foi apenas observado
através dos gráficos gerados. A partir do gráfico filtrado no domínio da frequência, é
imperceptível a existência de um ruído, portanto, o sinal foi devidamente filtrado.
 7
5 CONCLUSÃO
Filtros digitais permitem que os sinais possuam apenas o que for de interesse
para o projetista, abrindo uma gama de aplicações e áreas das mais variadas em que
se pode aplicá-los. Entretanto, apesar do Matlab ser uma ferramenta bem poderosa e
de multiuso, áudios tratados através de filtros digitais não se tornam perfeitos, mas,
ainda assim, há uma melhora significativa na redução dos ruídos ao se aplicar uma
filtragem a estes áudios. Entretanto, é possível notar que, graficamente, os ruídos não
estão mais presentes nos sinais.
 8
REFERÊNCIA
INGLE, Vinay K.; PROAKIS, John G. Digital Signal Processing using Matlab. 3ª
Edição.
 9
APÊNDICE
Gráficos gerados no Matlab referentes aos áudios – à esquerda, domínio do tempo, à direita,
domínio da frequência
Gráficos gerados no Matlab referentes aos sinais de 200 e 800 Hz – à esquerda, domínio do
tempo, à direita domínio da frequência
 10
Ruido800Hz.m
clc;
close all;
clear all;
 
fs=3200; %frequência de amostragem. fs = 800*4 = 3200
Ts= 1/fs; %Período
t = [0:Ts:3]; %Tempo de 0 a 3, tendo o período como incremento
 
% Senoide de 200Hz
f1 = 200; %frequência de 200Hz
s1 = 2*sin(2*pi*f1*t);
subplot(421);
plot(t,s1);
title('Senoide de 200Hz no domínio do tempo')
ylabel('Amplitude')
xlabel('Tempo (s)');
 
% Espectro de frequência 200Hz
subplot(422);
my_fft(s1,fs);
 
% Senoide de 800Hz
f2 = 800; %frequência de 800Hz 
s2 = 4*sin(2*pi*f2*t);
subplot(423);
plot(t,s2);
title('Senoide de 800Hz no domínio do tempo')
ylabel('Amplitude')
xlabel('Tempo (s)');
 
% Espectro de frequência 800Hz
subplot(424);
my_fft(s2,fs);
 
% somando s1 e s2
s = s1+s2;
subplot(425);
plot(t,s);
title('Soma de 200Hz e 800Hz no domínio do tempo')
ylabel('Amplitude')
xlabel('Tempo (s)');
 
% Espectro de frequência soma de 200Hz e 800Hz
subplot(426);
my_fft(s,fs);
 
% Filtro passa-baixa FIR
% frequência de amostragem (fs) de 3200Hz
 
fpass = 250;
 11
fstop = 750;
 
wp = (fpass/(fs/2))*pi;
ws = (fstop/(fs/2))*pi;
 
wt = ws - wp; % frequência de transição
wc = (wp + ws)/2; % frequência de corte intermediária
 
M = ceil((6.2*pi/wt)) + 1;
 
hd = ideal_lp(wc,M); % função sinc passa-baixa ideal
 
%n = [0:M-1];
 
%w_han = 0.5-0.5*cos(2*pi*n/M-1);
 
w_han = hann(M)'; % calcula a janela de hamming
 
h = hd.*w_han; % multiplica os vetores no tempo
 
%figure;
%subplot();
%freqz(h); % mostra a magnitude e a fase do filtro;
 
sinal_filtrado = conv(h, s);
 
subplot(427);
plot(sinal_filtrado); % sinal filtrado no domínio do tempo
title('Sinal filtrado no domínio do tempo')
ylabel('Amplitude')
xlabel('Tempo (s)');
 
subplot(428);
my_fft(sinal_filtrado, fs); % sinal filtrado no domínio da frequência
my_fft.m
function [X, frequency ] = my_fft(x, fs)
 % normal - normalizar o eixo das abscissas
 normal = length(x);
 v_aux = 0:normal-1; % vetor auxiliar
 T = normal/fs;
 frequency = v_aux/T; % redimensiona o eixo das abscissas 
 X = fft(x)/normal; % normalizar
 fc = ceil(normal/2); % frequência de corte para ajustar os dados do vetor
 X = X(1:fc);
 %subplot();
 plot(frequency(1:fc), abs(X)); % abs retorna o módulo do sinal no domínio 
da frequência
 title('Análise do Espectro no domínio da frequência');
 12
 xlabel('Frequência Hz');
 ylabel('Amplitude');
end
FiltrarVoz.m
 
voz = wavread('voz_audio.wav'); %carrega o áudio voz_audio.wav
vozcomsacola = wavread('voz_sacola_audio.wav'); %carrega o áudio 
voz_sacola_audio.wav
fs = 44100; %frequência de amostragem do áudio
 
%Voz e sacola separados
subplot(421);
plot(voz);
title('Voz e sacola separados sem filtro');
xlabel('Tempo(s)');
ylabel('Amplitude');
 
subplot(422);
my_fft(voz,fs); %fft para plotar no domínio da frequência
 
fpass = 800; %frequência de passagem
fstop = 1000; %frequência de parada
 
wp = (fpass/(fs/2))*pi; %frequência angular relacionada à frequência de 
passagem
ws = (fstop/(fs/2))*pi; %frequência angular relacionada à frequência de parada
 
wt = ws - wp; %frequência de transição
wc = (ws + wp)/2; %frequência de corte ou frequência de canto
 
M = ceil((6.2*pi/wt)) + 1; %comprimento do filtro
hd = ideal_lp(wc,M); %Criação da 
w_han = hann(M)'; %janela
h = hd.*w_han; %Hanning 
 
voz_filtrada = conv(h, voz); %Multiplicação em forma de convolução da janela 
com o áudio original, retirando as frequências indesejadas
 
subplot(423);
plot(voz_filtrada);
title('Voz filtrada no domínio do tempo');
xlabel('Tempo(s)');
ylabel('Amplitude');
 
subplot(424);
my_fft(voz_filtrada,fs);
 
%Voz e sacola juntos
subplot(425);
 13
plot(vozcomsacola);
title('Voz e sacola juntos sem filtro');
xlabel('Tempo(s)');
ylabel('Amplitude');
 
subplot(426);
my_fft(vozcomsacola,fs);
 
vozcomsacola_filtrada = conv(h, vozcomsacola);
 
subplot(427);
plot(vozcomsacola_filtrada);
title('Voz com sacola filtrada no domínio do tempo');
xlabel('Tempo(s)');
ylabel('Amplitude');
 
subplot(428);
my_fft(vozcomsacola_filtrada,fs);
ideal_lp.m
function hd = ideal_lp(wc, M)
% Ideal LowPass filter computation 
% -------------------------------
% [hd] = ideal_lp(wc,M) 
% hd=idealimpulseresponsebetween0toM-1 
% wc=cutofffrequencyinradians 
% M=lengthoftheidealfilter 
%
alpha = (M-1)/2; 
n = [0:1:(M-1)];
m=n-alpha;
fc=wc/pi;
hd=fc*sinc(fc*m);
end
 14

Outros materiais