You are on page 1of 9

1

Procesamiento Digital de Señales


Análisis de frecuencia y diseño de filtros digitales
Martínez Quintero Libaniel, Gómez Villamizar Harry David
Libaniel.martinez47@gmail.com – hargom18@gamil.com


II. PROCEDIMIENTO
Resumen—En el presente trabajo encontrara el modelo de
señales creadas mediante código del programa matlab, así A. Fase de revisión: En esta fase se tomó el
mismo el tratamiento de señales de audio (sonidos), registro de varios audios, se aplicó su
ingresados mediante micrófono, el cual es captado y guardado transformada fft, capturando el registro de sus
por el mismo, reproduciendo y generando su respectiva señal, señales causadas. Se realizaron pruebas de
esta señal se trató mediante la transformada de Fourier, con el
comando (fft), se le aplicó un señal de ruido y así mismo se
filtrado con las señales tomadas. Búsqueda de los
filtro digitalmente. comandos a utilizar en matlab, Pruebas aleatorias
con el aumento de tiempo y frecuencia en las
Índice de Término: señales utilizados y verificando el
FFT – ruido blanco – ruido rosa - filtros – función comportamiento de las mismas..
rand - señales. B. Última Fase
Con el registro de los audios y de las señales a
I.INTRODUCCIÓN utilizar, se dio paso al tratamiento de cada señal,
aplicando los tipos de filtros sugeridos y de ruidos
En el siguiente documento usted encontrara la
indicados. Obteniendo un registro de cada señal, sus
aplicación y tratamiento de señales con el uso del
gráficas, transformadas (fft) y por último la señal de
programa matlab.
audio filtrada.
Para ello se tomara el registro de un audio con un
tiempo aleatorio y a este se le aplicara el III. DESARROLLO DEL TRABAJO
tratamiento de la señal, el cual consistirá en tomar la 1) Genere una señal sinusoidal y agréguele ruido.
señal del audio, graficarla y aplicarle su Mediante la función fft(), observe el espectro de la señal
transformada de Fourier con el uso del comando sin ruido y la señal con ruido. Proponga un método para
(fft), que como resultado generara una señal filtrarla.
transformada a la original.
Así mismo se aplicra un tipo de ruido a la señal
original la cual, luego de ser filtrada bajo los
diferentes tipos de filtro, pasa baja, pasa alta. Se
tomara el registro de la señal final, comparando las
tres señales, la original, con ruido y luego de ser
filtrada.

Premio Colombiano de Informática ACIS 2011


2

Señal sinusoidal sin ruido. Señal sinusoidal con ruido + transformada fft
Código en Matlab Código en Matlab
x_0=sin(2*pi*t*f); x=x_0+ 3*randn(size(t))
Señal sinusoidal con ruido. nfft=1024;
Código en Matlab Y=fft(x,nfft);
x=x_0+ 3*randn(size(t))
2) Ejecute el comando fdatool en el command window
de Matlab y interactúe con esta herramienta y cada una de
las posibilidades que ofrece.

Señal sinusoidal sin ruido + su transfomada


Código en Matlab
nfft=1024
Y=fft(x,nfft) Se ejecuta el comando fdatool el cual sera utilizado en la
verificación de los filtros, pasa baja y pasa alta en cada una de
las señales tratadas.

Premio Colombiano de Informática ACIS 2011


3

3) Ejecute el siguiente código

Señal del sonido generada a una frecuencia de 11025

Señal del sonido causado a una frecuencia de 44100

señal del sonido causada a una frecuencia de 8000.

Señal del sonido causado a una frecuencia de 22050

Señal causada a una frecuencia de 5000

Premio Colombiano de Informática ACIS 2011


4

4) Revise los comandos de Matlab, para adquirir una


señal de audio y almacenarla. Reprodúzcala después de
ser almacenada. Escoja el tamaño de la misma y la señal
que desee a su criterio.

. Señal causada a una frecuencia de 3000

Al reproducir los 6 sonidos, los primero 5


presentaron el mismo nivel de audio. Excepto el
sonido numero 6 el cual su frecuencia esta por
2000Hz, y en ciclo for la última frecuencia de Codigo de Matlab:
muestreo (fs) es la menor (3000Hz.).
Por tanto basándonos en el teorema de Nyquist la fs=44100; %frecuencia de muestreo
(fs - frecuencia de corte) debe ser como mínimo dos
senal_salida=audiorecorder(fs,16,1);
veces mayor a la frecuencia máxima. %Creala canción del objeto de grabacion
Es por esto que se cumple el teorema de Nyquist.
msgbox('Empezando Grabacion',' Grabadora
'); % indica el mensaje de inicio de
grabación. Es opcional

recordblocking(senal_salida,duracion);%
Comando utilizado para grabar el sonido

msgbox('Terminando Grabacion',' Grabadora


');% Indica el mensaje del fin de la
grabación.

senal_grabada=getaudiodata(senal_salida,
'single'); % Convierte los valores del
audio a una señal

wavwrite(senal_grabada,fs,uiputfile({'*.wa
v'},'Guardar como')); % Comando utilizado
para grabar y guardar la señal

[data Fs] = audioread('cancion.wav');


% Comando utilizado para buscar y
almacenar el audio.

sound(data,Fs);
% Comando utilizado para reproducir la
canción.

Premio Colombiano de Informática ACIS 2011


5

subplot(2,1,1) % % Comando utilizado para


realizar el grafico de la señal de audio.

plot(data); % graficanado la señal en el


dominio de tiempo

subplot(2,1,2)
a=abs(fft(data)); % comando para calcular
la FFT
plot(a(1:end/2)); % comando usado para
calcular la gráfica a la mitad de la
señal, en el dominio de la frecuencia

Codigo de matlab ejemplo sugerido.


t = 0:0.001:pi;
g = sin(2*pi*2*t);
g_ruido = g + 0.25*randn(1,size(t));
subplot(2 1 1) plot(t,g) subplot(2 1 2)
plot(t,g_ruido)

Señal de la canción en tiempo y frecuencia


original.

5) A través de la función rand (), agregue ruido a la señal


obtenida. Reprodúzcala. Estudie los siguientes tipos de ruido y
la forma de generarlo en Matlab de ser posible: blanco, rosa y
azul. Se sugiere el siguiente código:

Señal de la canción + ruido, función rand


Codigo de Matlab para agregar ruido:
[f,fs] = audioread('cancion.wav');
r1=f(:,1)';
fn=fs/2;
t=1:1/fs:5;
f1=400;
f2=20e3;
s_ruido1=r1+(0.2*randn(1,length(r1)));
sound(s_ruido1,fs);
subplot(2,1,1) % se utiliza el comando
subplot para hacer gráficos con más de un
sector
plot(s_ruido1); % graficando la señal en
el dominio del tiempo

Premio Colombiano de Informática ACIS 2011


6

subplot(2,1,2)
a=abs(fft(s_ruido1)); % calculamos la FFT
plot(a(1:end/2));

Tipos de ruidos:
b)
a)

Ruido Blanco Gausiano: Ruido Blanco: Su psd es constante y su grafica es


plana, la señan contiene toda la frecuencia y todas ellas
tienen la misma potencia.
Codigo de Matlab:
ruido
my_noisy_signal = awgn (data, 15); % Codigo de Matlab:
comando utilizado para generar ruido ruido
blanco gaussiano. my_noisy_signal = randn(1,100000);%codigo
sound(my_noisy_signal,Fs); ruido blanco%
subplot(2,1,1) % se utiliza el comando sound(my_noisy_signal,Fs);
subplot para hacer graficas con mas de un subplot(2,1,1) % se utiliza el comando
sector subplot para hacer graficos con mas de un
plot(my_noisy_signal); % graficando la sector
señal en el dominio del tiempo. plot(my_noisy_signal); % graficanado la
subplot(2,1,2) señal en el dominio de los samples de
a=abs(fft(my_noisy_signal)); % calculamos tiempo
la FFT subplot(2,1,2)
plot(a(1:end/2)); a=abs(fft(my_noisy_signal)); % calculamos
la FFT
plot(a(1:end/2));

Premio Colombiano de Informática ACIS 2011


7

Se toma el audio con una frecuencia entre 0 y


5000(Hz) y se diseña un filtro digital pasa baja
mediante la herramienta fdatool de Matlab.
Utilizando el método Fir Equiripple, a una
frecuencia de paso de 5000Hz y una de corte de
10000 (Hz). Al filtrar la señal, el audio que se
obtiene presenta menos ruido del que se había
incluido, aunque afecta calidad de la canción
original puesto que el ruido esta sobrepuesto en
todo el recorrido de la señal.

Codigo de Matlab:

L=filter(fpbaja,s_ruido1);
sound(L,fs);
Ruido Rosa: su psd es directamente proporcional
a 1/F o dicho de otro modo, su psd década 3db/8 a 7) Agregue distintos contenidos de frecuencia conocidos (no
medida que subimos en frecuencia. El espectro del aleatorios), los cuales se interpretarán como ruido y
ruido rosa es semejante al espectro medio mediante los cuatro tipos de filtros (pasabajos, pasaaltos,
pasabanda, rechazabanda), elimine las señales agregadas,
acumulado de la música sinfónica.
recuperando la señal original. Compruébelo escuchando la
señal filtrada. Al menos realice dos filtros.

6). Mediante alguna estrategia de filtrado digital, la cual


Codigo de matlab generar ruido no aleatorio( bit):
debe ser documentada, elimine el ruido y recupere la señal
original.
[f,fs] = audioread('cancion.wav');
r1=f(:,1)';
fn=fs/2;
t=1:1/fs:5;
f1=500;
f2=20e3;
s_ruido1=r1(1:length(t))
+0.5*sin(2*pi*f1(t)); % Ruido no
aleatorio;

Creacion del filtro pasa baja

Exporta el filtro a código Matlab


Audio + Ruido en tiempo y frecuencia 500hz

Premio Colombiano de Informática ACIS 2011


8

Codigo matlab:

Diseño de filtro pasa baja

Señal audio filtrida en frecuencia y tiempo.


Codigo matlaba:
L=filter(fpalta3,s_ruido1);
sound(L,fs);

[f,fs] = audioread('cancion.wav');
r1=f(:,1)';
fn=fs/2;
t=1:1/fs:5;
f1=5200;
f2=20e3;
s_ruido1=r1(1:length(t))
+0.5*sin(2*pi*f1(t)); % Ruido no
aleatorio;

Señal filtrada pasa baja, en tiempo y frecuencia.

Audio + Ruido en tiempo y frecuencia 5200hz

Premio Colombiano de Informática ACIS 2011


9

IV. CONCLUSIONES
Se concluye que con el uso de los filtros digitales,
podemos obtener o recuperar señales de audio que
se vean afectadas por inclusiones de ruido.

Con la implementación de los filtros pasa bajas o


pasa altas se puede eliminar la frecuencia de las
señales que afecten la señal de audio que se está
tratando.

Con el uso de la transforma de Fourier (fft) en


Matlab, nos permite detallar la ubicación en
frecuencia de la señal en frecuencia y señal con
ruido.

REFERENCIAS
- LA WEB DEL PROGRAMADOR
- PROCESACIMIENTO DIGITAL PARTE 1 PPT
- ANALISIS DE FURIER EN DISCRETA
- HTTPS://WWW.EDMODO.COM/HOME#/GROUP?
ID=23997293
- HTTP://WWW.ACADEMICOS.CCADET.UNAM.M
X/JORGE.MARQUEZ/CURSOS/INSTRUMENTACI
ON/RUIDO.PDF

RECONOCIMIENTO
Wilson Vladimir Angarita Masías

Premio Colombiano de Informática ACIS 2011

You might also like