Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guion 2 PCM 2008-2009
Guion 2 PCM 2008-2009
Grupo
Puesto
Apellidos, nombre
Fecha
Apellidos, nombre
3/5/6 de noviembre de
2008
El objetivo de esta prctica es familiarizar al alumno con la codificacin de forma de onda (con
prdidas) mediante tcnicas de Modulacin por Impulsos Codificados MIC- (Pulse Code Modulation
PCM).
Para llevar a cabo la prctica, desarrolle cada ejercicio en un fichero matlab dentro del directorio P2.
Se proporcionan dos cdigos Matlab accesibles desde la pgina de la asignatura:
o
Leyendo.m:
Es una funcin que permite leer un fichero de audio discreto
(sample_audio.mat) , lo sonifica y dibuja sus grficas caractersticas. Adems
devuelve un vector con la secuencia contenida en el fichero.
Todos estos ficheros estn accesibles en el archivo correspondiente a la prctica 2 en la pgina web de
la asignatura.
Justo antes de finalizar la prctica, comprima todo el directorio P2 en un fichero TxDatosP2GXxx.zip
(siendo X el grupo A, B o C- y xx el nmero de pareja), conctese al sistema de entrega de prcticas de
la Intranet y entrguelo en el grupo que corresponda (A, B o C). Gurdese adicionalmente una copia
personal, para posibles futuras reutilizacin del cdigo en prcticas posteriores.
2.1.1
Implemente una funcin que calcule los ndices (desde 0 hasta el nmero mximo) de intervalo a los
correspondientes una coleccin de muestras que respete la siguiente sintaxis:
Recibe:
o
Devuelve:
o
Haciendo uso de esta funcin escriba el cdigo de una funcin que implemente un cuantificador
uniforme simtrico, sin nivel de reconstruccin igual a 0, de n bits, que ser guardado en
PCMUniforme.m. La sintaxis de la funcin ser la siguiente:
function [Scuan] = PCMUniforme (S,nbits,v)
Recibe:
o
v == Valor de sobrecarga.
Devuelve:
o
Implementar una funcin decodificaPCM para llevar a cabo la reconstruccin de una seal
cuantificada que respete la siguiente sintaxis:
function [Srecon] = decodificaPCM (Scuan,nbits,v)
Recibe:
o
Devuelve:
Recomendaciones:
Compruebe la correccin de cada una de las funciones con secuencias cortas de las que pueda
calcular analticamente el resultado esperado.
Recuerde comprobar dentro de esta misma funcin que ninguno de los ndices resultantes es mayor
que nNiveles-1 ni menor que 0.
Recuerde que la potencia de matlab reside en su capacidad para el calculo matricial (i.e. Puede
dividir todos los elementos de una matriz o vector por un escalar con UNA sola operacin).
Dibuje e indique los valores de decisin y reconstruccin de un cuantificador uniforme simtrico (sin
nivel de reconstruccin igual a 0) de 2 bits, y valor de sobrecarga V.
A partir de las funciones implementadas anteriormente, desarrolle un script Matlab con nombre
Ejercicio1.m en el que se lea el fichero de audio sample_audio.mat y se lleve a cabo su
cuantificacin y reconstruccin (con 8 bits y valor de sobrecarga adecuado para evitar el error en el
proceso de cuantificacin por saturacin) y dibuje las grficas correspondientes a las seales cuantificada
y reconstruida, indicando los valores de los ejes. Dibuje las grficas obtenidas:
o
Seal original
z(t)
Hist z(t)
Seal cuantificada
z(qt)
Hist zq(t)
Seal reconstruida
z(wt)
Hist zw(t)
Seal de error
error(t)
Hist error(t)
2.1.2
Para el desarrollo del codificador G711 se implementarn por separado las funciones para calcular los
valores para el signo, intervalo y segmento. Lleve a cabo la implementacin de dichas funciones como se
indica a continuacin:
function [signos] = getSigno (Snorm)
Recibe:
o
Devuelve:
signos == Signos de las muestras de entrada: Mayor o igual que 0 1 , Menor que 0 0.
Escriba la funcin getSegmento que devuelve los ndices de los segmentos a los que pertenece una
coleccin de muestras normalizadas (para ello deber definir a mano dentro de la funcin los lmites para
cada segmento)
function [segmentos] = getSegmento (Snorm)
Recibe:
o
Devuelve:
o
Recibe:
o
Devuelve:
o
Implemente una funcin que calcule los valores de cuantificacin correspondientes a una coleccin de
muestras mediante el uso de las tres funciones anteriores y que respete la siguiente sintaxis:
function [Scuan] = getCuantificacionG711 (Snorm)
Recibe:
o
Devuelve:
Escriba el cgigo de una funcin PCMG711 en la que se lleve a cabo el proceso de normalizacin y
cuantificacin de una seal mediante las funciones implementadas anteriormente:
function [Scuan] = PCMG711 (S,v)
Recibe:
o
v == Valor de sobrecarga.
Devuelve:
Haciendo uso de los conceptos aplicados para el proceso de codificacin implemente una funcin
decodificaG711 que lleve a cabo la decodificacin de una seal cuantificada previamente. En caso
de considerarlo necesario implemente las funciones auxiliares que considere oportuno. La sintaxis de la
funcin ser la siguiente:
function [Srecon] = decodificaG711 (Scuan,v)
Recibe:
o
v == Valor de sobrecarga.
Devuelve:
o
Recomendaciones:
Elija un par de valores de muestras e inicie el desarrollo probando sobre una seal ficticia de una
muestra (cuyo resultado haya calculado tericamente).
La secuencia de entrada S se obtendr mediante la funcin Leyendo.m
La funcin getCuantificacionG711 espera una seal de entrada que vare entre -1 y 1.
Calcule analticamente los cdigos, valores de reconstruccin y error de las siguientes muestras:
o
Desarrolle un script Matlab con nombre Ejercicio2.m en el que se lea el fichero de audio
sample_audio.mat y se lleve a cabo su cuantificacin y reconstruccin mediante las funciones
implementadas y dibuje las grficas correspondientes a las seales cuantificada y reconstruida, indicando
los valores de los ejes. Dibuje las grficas obtenidas:
o
Seal original
z(t)
Hist z(t)
Seal cuantificada
z(qt)
Hist zq(t)
Seal reconstruida
z(wt)
Hist zw(t)
Seal de error
error(t)
Hist error(t)
10
Recibe:
o
Devuelve:
secuencia == Vector fila en el que cada posicin se corresponde con un bit de la secuencia Scuan en
formato binario.
Desarrolle un script Matlab con nombre Ejercicio3.m en el que se lea el fichero de audio
sample_audio.mat y se lleve a cabo la codificacin uniforme con 4 y 8 bits y la G711 aplicando la
funcin getSecuenciaBits a los resultados obtenidos.
Comente los resultados:
11