Vous êtes sur la page 1sur 12

UNIVERSIDAD MICHOACANA DE SAN NICOLAS DE HIDALGO

FACULTAD DE INGENIERIA ELECTRICA





Laboratorio De Procesamiento Digital De Seales



Prctica #1
Graficacin de seales sinusoidales, el problema de Aliasing y el manejo de
seales de audio



Alumno:
Jess Uriel Baltazar Hernndez
0901898k


Laboratorista:
M.C. Antonio Ulises Saenz Trujillo.



Morelia Michoacn 8 de abril de 2014
Practica #1
Graficacin de Seales Sinusoidales, el Problema de Aliasing y el Manej de Seales de
Audio
Objetivo: Aprender a graficar seales senoidales con las escalas horizontal y vertical adecuadas y
observar la importancia del nmero de muestras por periodo y el fenmeno de traslape o aliasing.
Implementar las funciones bsicas de Matlab para el manejo de las seales de audio, usando los
sonidos demo de Matlab y archivos .wav
Introduccin
Seales. Una seal es una funcin de una o varias variables. Las seales pueden ser analgicas o
digitales. Las seales analgicas son funcin de una o varias variables reales (continuas), y las
seales discretas o secuencias son funcin de una o varias variables que nicamente puede tomar
valores enteros.El rango de una seal es el conjunto de valores que puede tomar la seal en su
dominio. El rango es continuo si est formado por uno o varios intervalos reales, o discreto cuando
la seal toma un valor de entre los de un conjunto previamente establecido.
Secuencias. Es un conjunto de nmeros ordenados. Se representa en funcin de una variable n,
que toma valores enteros. Por ejemplo:
X[n]={-2,-1,0,1,2 }
Los valores de una secuencia, se denominan como muestras. Se utilizan para determinar el
instante de tiempo en el que graficaremos la funcin.
Manejo de secuencias en MATLAB
MATLAB es una herramienta de software matemtico que ofrece un entorno de desarrollo
integrado con un lenguaje de programacin propio. Entre sus prestaciones bsicas se hallan: la
manipulacin de matrices, la representacin de datos y funciones, la implementacin
de algoritmos, la creacin de interfaces de usuario y la comunicacin con programas en
otros lenguajes y con otros dispositivos hardware.
Definicin de vectores y matrices
En matlab para definir un vector se realiza de la siguiente manera:
A = [ 1 2 3 4 . . .]
A =
1 2 3 4 5

Las matrices se definen o introducen por filas; los elementos de una misma fila estn separados
por espacios o comas, mientras que las filas estn separadas por pulsaciones de la tecla intro o por
caracteres punto y coma.
B=[1 2 3 ; 4 5 6 ; 7 8 9]
B =
1 2 3
4 5 6
7 8 9
Se puede acceder a cualquier elemento de la matriz se la siguiente forma:
B(fila,columna)
B(2,3)
ans = 6
Operador dos puntos (:)
El operador : representa un rango, en este caso, puede utilizarse con valores positivos o
negativos. En este caso el incremento va entre el valor inferior y el superior, en las formas que se
muestran a continuacin:
C=-1:1:8
C =
-1 0 1 2 3 4 5 6 7 8
Manejo de audio
Para leer archivos de audio en formato wav y convertirlos en una matriz de nmeros que
representen esa seal, podemos usar los siguientes comandos:
1 y = wavread(NombreArchivo)
2 [y, Fs] = wavread(NombreArchivo)
3 [y, Fs, nbits] = wavread(NombreArchivo)
4 [...] = wavread(NombreArchivo, N)
5 [...] = wavread(NombreArchivo, [N1 N2])
6 siz = wavread(NombreArchivo,'size')
Para reproducir el archivo de auidio se utiliza el comando sound mediante la siguiente sintaxis:
sound(y,Fs)
Donde y=vector del audio
Fs= fecuencia de muestreo




Desarrollo
1.- Usando MATLAB, genere un vector de tiempo t que vaya de 0 a 0.5 en incrementos de 0.01.
Creamos un vector iniciado en cero, y finalizado en 0.5, en incrementos de 0.01. En este caso el
valor de 0 a 0.5 representa el periodo de tiempo y el valor de 0.01 el periodo de muestreo. El
cdigo es el siguiente:
t=[0:0.01:0.5];

2.- Calcule un vector y utilizando la expresin y(t)=sen(wt) y donde w=2f para cada una de las
siguientes secuencias.
a) f1= 1Hz.
b) f2 = 2Hz.
c) f3 = 4.5Hz.
d) f4 = 10Hz.
e) f5 = 50Hz.
f) f6 = 104.5Hz
Se evalu la funcin del seno, para cada valor de frecuencia de las secuencias anteriores,
obteniendo as el vector y respecto a su frecuencia. El cdigo en matlab es el siguiente:
%y=seno(wt) ____ w=2*pi*f ___ y=seno(2*pi*f*t)

y1=sin(2*pi*t);
y2=sin(2*pi*2*t);
y3=sin(2*pi*4.5*t);
y4=sin(2*pi*10*t);
y5=sin(2*pi*50*t);
y6=sin(2*pi*104.5*t);

3.-Grafique de forma independiente cada uno de los vectores resultantes asegurndose que la escala
mostrada en el eje de las abscisas (eje x) este graduado conforme al vector t calculado en el inciso
1.

Crearemos una ventana en la que pondremos 6 grficos, divididos en 3 columnas y 2 filas de la
forma siguiente:

%subplot(filas,columnas,posicion)

%plot(vector de tiempo, funcin a graficar)

subplot(3,2,1)
plot(t,y1)
subplot(3,2,2)
plot(t,y2)
subplot(3,2,3)
plot(t,y3)
subplot(3,2,4)
plot(t,y4)
subplot(3,2,5)
plot(t,y5)
subplot(3,2,6)
plot(t,y6)

El resultado es el siguiente:




















4.- Observe y asegrese que las seales representadas se correspondan con sus respectivas
frecuencias. En caso de no ser as, explique con sus propias palabras la posible causa.
En la imagen podemos observar que todas las grficas son diferentes, a excepcin de grafica 3 y 6,
y es raro porque sus frecuencias son diferentes. Quizs se est presentando un problema de
Aliasing.
5.- Grafique las seales de frecuencia f3 y f6 juntas, y comprelas visualmente. Escriba sus
observaciones y trate de explicar con sus propias palabras el fenmeno observado.
Se graficaron las dos seales juntas mediante en siguiente cdigo en MATLAB.
plot(t,y3,'-r',t,y6,'ob')
gridon
title('Graficas con diferente frecuencia: 4.5Hz y 104.5Hz')
xlabel('t');
ylabel('y(t)');
legend('F = 4.5 Hz','F = 104.5 Hz')

El resultado fue el siguiente:









En esta grafica podemos observar que las dos funciones estn una sobre de la otra. Esto significa
que en este caso se est presentando el fenmeno conocido como aliasing. Esto se presenta
debido a que la frecuencia de muestreo no es la adecuada.
Si tomamos otro periodo de muestreo tambin cambiara la frecuencia de muestreo. Observemos
que pasa.
Definamos nuestro vector de tiempo cambiando el periodo de muestreo.
t=[0:0.001:0.1];

Ahora volvamos a graficas las dos seales juntas.









En esta nueva grafica podemos observar que ya no estn una sobre la otra. Esto es debido a que
cambiamos la frecuencia de muestreo de acuerdo al teorema de Nyquist.
6.- Compare numricamente las dos seales anteriores y determine si se tratan de la misma seal, y
explique porque.
Cul es la condicin para que dos seales sean las mismas?
Bueno estas tendran que tener las misma amplitud, frecuencia, tipo de seal, etc.
Cmo podramos comprobar si son iguales? Si restamos dos nmeros y su diferencia nos da como
resultado cero, esto significa que estos son iguales, por ejemplo 3-3=0. Esto significa que 3=3.
Hagamos lo mismo con las seales, si su diferencia es cero significa que son iguales en caso
contrario estas son diferentes. En MATLAB tenemos:
A=y3-y6

El resultado es diferente de cero, por tanto confirmamos el paso anterior, las seales no son
iguales.
7.- Usando el comando load, cargue uno de los siguientes archivos de sesin incluidos en MATLAB:
handel.mat, chrip.mat o gong.mat.
En MATLAB tenemos:
loadhandel.mat
8.-Con el comando sound reproduzca el vector y a su respectiva Fs sound(y,Fs)- y escuche
atentamente el sonido reproducido.
En MATLAB tenemos:
sound(y,Fs)

El sonido que escuche, es parte de una cancin Aleluya!! de aproximadamente 10 seg.

9.-Vuelva a reproducir el mismo sonido pero a frecuencias Fs2 = 2*Fs y Fs3 = Fs/2, escuche con
atencin y describa con sus propias palabras el fenmeno observado, y explique la razn de dicho
efecto en el audio. Ponga especial atencin al tiempo de reproduccin de su secuencia de audio.

Para el primer caso tenemos:

sound(y,Fs*2)

En este caso se escuch la msica distorsionada, se aument la frecuencia de muestreo y al
reproducirla esta iba ms rpido.

Para el segundo caso tenemos:

sound(y,Fs/2)
Paso lo mismo que en el caso anterior solo que en esta se dividi la frecuencia de muestreo a la
mitad. Al reproducir la pista esta iba ms lento de lo normal.

10.-Realice un submuestreo mediante el comando y2 = y(1 : k : end); donde k=2 (lo cual equivale a
que la frecuencia de muestreo sea Fs2 = Fs/k ), y reproduzca la nueva secuencia usando la nueva
Fs2. Una realizado haga lo mismo para k=4 y k=8;

Para k=2;

A=y(1:2:end);
sound(A,Fs/2)

Para k=4;

B=y(1:2:end);
sound(B,Fs/4)

Para k=8;

C=y(1:2:end);
sound(C,Fs/8)


Se graficaron estos sonidos para poder ser comparados:

subplot(3,1,1)
plot(A)
title('k=2')
subplot(3,1,2)
plot(B)
title('k=4')
subplot(3,1,3)
plot(C)
title('k=8')




















A medida que la frecuencia de muestreo se iba haciendo ms pequea, el sonido se distorsionaba
ms. El sonido cada vez se escuchaba ms bajo, como si estuviera en algo profundo. Tambin el
tiempo de reproduccin disminuyo un poco.

11.- Utilice el comando wavread para leer el equivalente de 10 segundos de audio, y reprodzcalo
usando el comando sound con sus argumentos adecuados. Tome en cuenta el valor de Fs de dicho
audio para calcular el nmero correcto de muestras necesarias para reproducir los 10 segundos de
audio solicitados.

Primero tenemos que leer el sonido completo para conocer su frecuencia de muestreo.

[y,Fs]=wavread('Treasure.wav'); %Funcion que lee un audio
y te devuelve el vector
y, y la Fs.


La frecuencia de muestreo obtenida fue de: Fs= 44100 muestras/segundo

Para leer el equivalente a 10 segundos debemos de multiplicar la Fs por 10 y guardarlo en
una variable para despus poder reproducirlo. En MATLAB tenemos.

tiempo=10*Fs;
[z,Fs]=wavread(song,timpo)
sound(z,Fs)

Al reproducirlo se escuch que efectivamente solo se reprodujeron los 10 segundos.

12.- Modifique la secuencia de audio de tal manera que el volumen del audio sea del 50% de su
volumen original. Explique el procedimiento realizado para lograr el objetivo.

Para obtener el 50% del volumen original se multiplico el vector del sonido por 0.5
Esto es para reducir la amplitud y este se reproduzca a la mitad de su volumen.

El cdigo en MATLAB es el siguiente:

a=z*0.5;
sound(a,Fs)

Al reproducirlo se escuch a la mitad de su volumen original.

14.- Grafique la secuencia de audio original y la que se ha modificado el volumen, y comprelas
visualmente.

Para ver las dos secuencias de audio y compararlas se grafic en MATLAB de la siguiente manera:


subplot(2,1,1)
plot(z)
title('Sonido original vol 100%')
subplot(2,1,2)
plot(a)
title('Sonido modificado vol 50%')

El resultado fue el siguiente:
















En esta grafica podemos observar claramente cmo se modific su amplitud. El sonido original
tiene una amplitud de 1 mientras que la modificada est a la mitad 0.5, esto es lo que ocasiona
que el volumen se escuche a 50% de su volumen original.
Conclusin
Se demostr de forma grfica el problema dealiasing, se observ que en ocasiones una
grfica puede engaarnos ya que debido a que no se toma la frecuencia de muestreo
adecuada de acuerdo al teorema de Nyquist, se produce un traslapamiento, impidiendo
despus recupera la seal original. Para evitar este fenmeno se tiene que muestrear por
arriba de la frecuencia de Nyquist Fn=2fo.
Tambin se conocieron nuevos comandos para modificar audios en formato wav. Estos
comandos son wabread y sound. wavreadsirve para convertir un audio en un vector de
nmeros para despus estos poder ser modificados mediante la frecuencia de muestreo.
Sound sirve para reproducir el audio del vector de nmeros obtenido de wavread.
En los ejercicios, se observ la importancia de la frecuencia de muestreo. Si esta se cambia
del valor original con la que fue grabada dicho audio, se escucha como se distorsiona,
produciendo un pequeo retardo en el tiempo y haciendo la voz ms grave o a ms aguda
segn sea el caso.




Cdigo completo de MATLAB
%1
t=[0:0.01:0.5]; %vector de 0 a 0.5 con incrementos de 0.01

%2
%y=seno(wt) ____ w=2*pi*f ___ y=seno(2*pi*f*t)

y1=sin(2*pi*t);
y2=sin(2*pi*2*t);
y3=sin(2*pi*4.5*t);
y4=sin(2*pi*10*t);
y5=sin(2*pi*50*t);
y6=sin(2*pi*104.5*t);

%3
%subplot(filas,columnas,posicion)
subplot(3,2,1)
plot(t,y1) %Graficamos y1
subplot(3,2,2)
plot(t,y2) %Graficamos y2
subplot(3,2,3)
plot(t,y3) %Graficamos y3
subplot(3,2,4)
plot(t,y4) %Graficamos y4
subplot(3,2,5)
plot(t,y5) %Graficamos y5
subplot(3,2,6)
plot(t,y6) %Graficamos y6

%5
figure(7)
%ploteamos las dos graficas,
%plot(vector,function,tipo y color,sig grafica)
plot(t,y3,'-r',t,y6,'-b')
gridon%activamos cadricula
%titulo de la grafica
title('Graficas con diferente frecuencia: 4.5Hz y 104.5Hz')
%titulo del eje x
xlabel('t');
%titulo del eje y
ylabel('y(t)');
%agregamos una leyenda
legend('F = 4.5 Hz','F = 104.5 Hz')

%6
A=y3-y6
%No es la misma seal, ya que al restarlas no da como
resultado cero

%7
% load === carga un archivo
loadhandel.mat

%8
%sound === reproduce unarchivo
sound(y,Fs)
sound(y,Fs*2)
sound(y,Fs/2)

%10 y 11
A=y(1:2:end);
sound(A,Fs/2)

B=y(1:4:end);
sound(B,Fs/4)

C=y(1:8:end);
sound(C,Fs/8)

subplot(3,1,1)
plot(A)
title('k=2')
subplot(3,1,2)
plot(B)
title('k=4')
subplot(3,1,3)
plot(C)
title('k=8')

%12
%wavread === convierte un arachivo de audio en un vector de
nmeros, adems entrega la frecuencia de muestreo
[y,Fs]=wavread('Treasure.wav');
tiempo=10*Fs;
[z,Fs]=wavread(song,tiempo);
sound(z,Fs)

%13
a=z*0.5;
sound(a,Fs)

%14
subplot(2,1,1)
plot(z)
title('Sonido original vol 100%')
subplot(2,1,2)
plot(a)
title('Sonido modificado vol 50%')

Vous aimerez peut-être aussi