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!!!!!!!