ENGENHARIA DE TELECOMUNICAÇÕES
PROCESSAMENTO DIGITAL DE SINAIS
Assunto: Filtros Digitais: FIR e IIR
TRABALHO FINAL
Fazer um Script no Matlab que lê um arquivo do tipo .wav. e filtre o som utilizando um
filtro LPF com as Janelas dadas. O script deverá conter as seguintes funções:
1) função lerarquivo que lê o arquivo .wav com a função wavread e retorna os
seguintes variáveis:
y= vetor que contém os pontos do arquivo de som
Fs = frequência de amostragem utilizada pelo programa que gerou o arquivo wav.
Bits = a número de bits por amostra para codificar o arquivo.
ty = o vetor de tempo do arquivo.
function [y,Fs,bits,namostras, ty] = lerarquivo(nomedoarquivo)
[y,Fs,bits] = wavread(nomedoarquivo);
namostras = (length(y)-1);
ty = 0:(1/Fs):namostras*(1/Fs);
2) Fazer o seguinte Script no Matlab que lê e mostra o som adquirido e a
Transformada de Fourier, tanto para 0 a 2*pi, como de –pi a pi. Além disso
utilizar a função Menu para fazer um Menu de escolha da Janela de filtragem.
Para isto você deve utilizar a função menu do Matlab e o comando switch e o
while. O script abaixo é um início do trabalho que você deverá fazer.
% SCRIPT PARA FILTRAR UM ARQUIVO DE VOZ NO FORMATO .wav
% O SOM SERÁ FILTRADO COM VÁRIAS FREQUENCIAS DE CORTE
CONFORME O PEDIDO DO
% USUÁRIO. SERÃO UTILIZADAS TODAS AS JANELAS ESTUDADAS
clear all;
clc;
% LEITURA DO ARQUIVO DE VOZ
nomedoarquivo= input('ENTRE COM O NOME DO ARQUIVO entre aspas : ')
% ADQUIRE OS DADOS DO ARQUIVO
% y = dados do arquivo
% Fs = frequencia de amostragem
% namostras = número de amostras
ENGENHARIA DE TELECOMUNICAÇÕES
% ty = vetor com o tempo de amostragem
[y,Fs,bits,namostras, ty] = lerarquivo(nomedoarquivo);
% FAZER OS GRÁFICOS DO ARQUIVO E SUA TRANSFORMADA DE FOURIER
figure;
subplot(3,1,1); plot(ty,y);
tt = ['SINAL DE VOZ .WAV COM ' num2str(Fs) ' Hz e ' num2str(bits) ' bits de
codificação por amostra'];
title(tt);
xlabel( 'tempo (s)');
ylabel( 'amplitude');
% frequência digital 0 a 2*pi
s = linspace( 0,2*pi,namostras);
FFTy = fft(y,namostras);
subplot(3,1,2); stem(s/pi,abs(FFTy));
tt= [ 'TRANSFORMADA DE FOURIER DO SINAL DE 0 A 2*PI'];
title(tt);
ylabel( 'magnitude: |Y|');
xlabel( 'múltiplos de pi');
% frequência digital -pi a pi
s = linspace( -pi,pi,namostras);
FFTy = fftshift(fft(y,namostras));
subplot(3,1,3); stem(s/pi,abs(FFTy));
tt= [ 'TRANSFORMADA DE FOURIER DO SINAL DE -PI A PI'];
title(tt);
ylabel( 'magnitude: |Y|');
xlabel( 'múltiplos de pi');
sound(y,Fs);
clc;
wc = input('ENTRE COM A FREQUENCIA DE CORTE EM 0-1 : ');
wc = wc*pi ;
tr_width=0.2*pi ;
wp=wc-tr_width/2 ;
ws=wc+tr_width/2 ;
opcao = 0;
while opcao < 7
opcao
=
menu('Qual
a
Janela
usar?','Retangular','Bartlett','Hanning','Hamming','Blackman','Kaiser','Sair');
switch opcao
case 1
%Janela Retangular
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
deseja
ENGENHARIA DE TELECOMUNICAÇÕES
% filtrado e o som;
case 2
%Janela Bartlett
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
% filtrado e o som;
case 3
%Janela Hanning
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
% filtrado e o som;
case 4
%Janela Hamming
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
% filtrado e o som;
case 5
%Janela Hamming
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
% filtrado e o som;
case 6
%Janela Bartlett
% Fazer o código para projetar o filtro e para
% filtrar. Mostrar o filtro , sua fft, o sinal
% filtrado e o som;
case 7
%Janela Blackman
quit;
end; % Final do Switch
end; % Fim do while
Os parâmetros para o projeto do filtro LPF serão:
wc = dados de entrada no intervalo 0 a 1 , pois o programa vai transformar wc = wc*pi;
tr_width = largura de banda de tansição = 0.2*pi
ENGENHARIA DE TELECOMUNICAÇÕES
wp= wc – tr_width/2
ws = wc + tr_width/2
Para cada janela mostrar: Resposta em freqüência em magnitude do filtro, resposta em
freqüência do filtro ( em dB), sinal filtrado e o som final .
BOM TRABALHO!!!!!!!
Download

Aula 06/12/06