Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Segundo Punto
Segundo Punto
wav contiene una señal de voz contaminada con un ruido del tipo
sinusoidal.
a. Grafique la señal de voz contra el tiempo, y el espectro de frecuencia de la señal contra frecuencia
en Hz, y determine cuál es la frecuencia del ruido.
b. Diseñe un filtro tipo FIR por el método de las ventanas visto en clase que permita remover dicho
ruido utilizando las ecuaciones vistas en clase. Elija el orden del filtro que usted considere
conveniente. Grafique los coeficientes del filtro contra n, donde n = 0, . . .N (N es el orden del
filtro), y la respuesta en frecuencia del filtro contra f, donde −𝑓𝑠/2≤𝑓≤𝑓𝑠/2 (𝑓𝑠 es la frecuencia
de muestreo). Para esta última gráfica puede utilizar la función espectro.m.
Esta viene siendo la ecuación característica en el dominio de Z para un filtro pasabaja, con frecuencia
de corte 2500Hertz
Sin embargo, en la práctica esto no funciona para valores pares, pues n-N/2 puede dar cero y dar
indeterminación en la ecuación h[n]. Por lo tanto,
N = 151;
n = 1:N;
h = (1/pi).*((sin((5/8)*pi.*(n-N/2)))./(n-N/2));
subplot(2,1,1)
Codigo en comand
plot(h)
windows
title('coeficientes del filtro')
[frec, mag] = espectro(h,fs);
subplot(2,1,2)
plot(frec,mag)
title('espectro en frecuencia del filtro')
xlabel('Frecuencia en Hertz')
c. Escriba una rutina que implemente la ecuación de diferencias asociada a un filtro FIR, dada por
[𝑛]=Σ𝑏𝑘𝑥[𝑛−𝑘]𝑁𝑘=0 para una señal de entrada x[n] con un número de muestras finita. Los
coeficientes 𝑏𝑘 son los diseñados en el enunciado b). Filtre la señal de voz. Grafique la señal de voz
filtrada contra tiempo, y el espectro de frecuencia de la señal filtrada contra la frecuencia en Hz.
Función: filtroFir.m
senialSalida = zeros(1,length(senialEntrada));
Orden = length(H);
dataVentana = zeros(1,Orden);
for k = 1:1:length(senialEntrada)
for i = Orden:-1:2
dataVentana(i) = dataVentana(i-1);
end
dataVentana(1) = senialEntrada(k);
sumatoria = 0;
for i = 1:1:Orden
sumatoria = sumatoria + dataVentana(i)*H(i);
end
senialSalida(k) = sumatoria;
end
filtrado = filtroFir(sonido,h);
subplot(2,1,1)
plot(tiempo,filtrado)
xlabel('Tiempo en segundos') Codigo en comand
title('audio filtrado') Windows
subplot(2,1,2)
[frec, mag] = espectro(filtrado,fs);
plot(frec,mag)
xlabel('Frecuencia en Hertz')
title('espectro en frecuencia del audio filtrado')
d. Escuche la señal de voz filtrada utilizando la función de Matlab sound y compárelo con el original.