Está en la página 1de 9

1

CUANTIFICACIÓN
Bayas Jord y 1 , Romero Nilso n2
Departamento de Eléctrica y Electrónica, Universidad de las Fuerzas Armadas - ESPE
jnbayas @ espe . edu . ec ,nmromero 1@ espe. edu . ec

Resumen— En el presente documento se procedió al análisis %Grafico de los niveles de cuantificacion


mediante simulaciones del proceso de cuantificación de una señal uniforme
continúa utilizado el software computacional de Matlab, verificando for n=1:nivel
el comportamiento del mismo, y las funciones especiales que nos % hold on;
permitieron la correcta evaluación de los mismos. % plot(mniveles(n,:));
end
I. INTRODUCCIÓN
En la recuperación de la señal siempre pueden existir errores, y=abs(mniveles-repmat(x',nivel,1));
considerando que estos existen ya sea por el muestreo que se [distancia,xc]=min(y);
realiza, estos suelen sucede principalmente por una xc=xc-1; %Salida cuantificada
aproximación de la cuantificación, de este tipo existe dos que subplot(212) %Grafico: Señal
son los siguientes: cuantificada
 Cuantificación Uniforme: Se divide la escala de plot(xc);xlabel('muestras');ylabel('x_c(t)
forma lineal si la diferencia entre la amplitud máxima ');
y mínima de la señal tiene un valor Z. title('Señal cuantificada');
 Cuantificación No Uniforme: Se divide los niveles de grid on
cuantificación de tal manera que las amplitudes soundsc(xc,fs) %Sonido cuantificado
pequeñas no sean perdidas.
2) Defina la variable nivel = 16, comente lo observado y la
calidad del audio.
II.OBJETIVOS
 Entender e implementar el proceso de cuantificación
mediante el uso de Matlab.
 Comparar y analizar los resultados de cada una de
las actividades para la cuantificación.

III. MATERIALES
 Computador con software Matlab instalado.

IV. ACTIVIDADES
A.Cuantificación Uniforme
1) Código a Implementar
clear all
close all
clc

%Ejemplo: Cuantificador Uniforme


nivel=1024; %Numero de niveles Ilustración 1 Señal original y señal cuantificada obtenida 1
[x,fs]=audioread('sonido1.wav');
subplot(211)
plot(x);xlabel('muestras');ylabel('x(t)');
title('Señal Original')
grid on
%Division de los niveles en la señal de
audio
niveles=min(x):(max(x)-min(x))/(nivel-
1):max(x);
[tam1,tam2]=size(x); Ilustración 2 Señal cuantificada con 16 niveles
mniveles=kron(niveles',ones(1,tam1));
2

En el desarrollo de las ilustraciones 1 y 2 tenemos que se 4) Defina la variable nivel = 128, comente lo observado y la
grabó un audio de una vocal a. Observamos que la señal calidad del audio.
cuantificada es similar a la original, mas no es igual, esto
quiere decir que la cantidad de niveles usados no satisface
correctamente para obtener una mejor señal parecida en su
salida, esto además se refleja en que la calidad de audio
escuchada no es muy buena, y presenta un ruido parecido a la
tierra de los equipos.
3) Defina la variable nivel = 2, comente lo observado y la
calidad del audio.

Ilustración 5 Señal original y señal cuantificada obtenida 3

Ilustración 3 Señal original y señal cuantificada obtenida 2

Ilustración 6 Señal cuantificada con 128 niveles

Al observar la ilustración 5 y 6 podemos denotar que, con 128


niveles de cuantificación, la señal cuantificada se asemeja de
mayor manera a la señal original además de que los niveles de
cuantificación cubren básicamente toda la señal original lo que
permite reconstruir la gráfica con muy poca perdida de
información. Además, el audio se escuchó de mejor manera,
Ilustración 4 Señal cuantificada con 2 niveles casi sin existir un ruido, aunque todavía se escucha algo sutil.
5) Defina la variable nivel = 1024, comente lo observado y la
Como se puede observar en las ilustraciones 3 y 4, la señal calidad del audio.
original y la señal cuantificada no se parecen en nada, con solo
2 niveles de cuantificación no permite reconstruir de manera
correcta el audio original. Conjuntamente el audio posee
mucho ruido sin embargo se puede entender la letra.

Ilustración 7 Señal cuantificada con 1024 niveles


3

end

Después se realiza el proceso de cuantificación de la señal


muestreada de acuerdo a los niveles anteriormente asignados
con la ayuda de una matriz de igual dimensión que mniveles,
el cual contiene la información de la señal original x. Estas
dos matrices se restan y se obtiene el valor absoluto.
y=abs(mniveles-repmat(x',nivel,1));
[distancia,xc]=min(y);
Ilustración 8 Señal original y señal cuantificada obtenida 4 Por últimos se gráfica la señal cuantificada y conjuntamente se
reproduce dicha señal para comparar el audio obtenido con el
Observando las ilustraciones 7 y 8, la señal cuantificada con original.
1024 niveles es casi idéntica a la señal original y además los subplot(212) %Grafico: Señal
niveles de cuantificación cubren en su totalidad la señal cuantificada
original permitiendo de esta manera una mejor aproximación. plot(xc);xlabel('muestras');ylabel('x_c(t)
Esto se pudo denotar al escuchar el audio es muy idéntico al ');
original sin presentar ningún ruido. title('Señal cuantificada');
6) Explique el código utilizado y consulte la funcionalidad de grid on
códigos desconocidos. soundsc(xc,fs) %Sonido cuantificado
Primeramente, definimos el número de niveles según se 7) Comando desconocidos
requiera y después se procede a cargar el archivo de audio el  Audioread.-Lee los datos del archivo denominado filename
cual se requiera cuantificar, para facilitar el uso de esta se y devuelve los datos muestreados, x y una frecuencia de
ocupa el comando audioread que permite poder procesar un muestreo para esos datos, Fs.
audio guardado en la misma carpeta donde se encuentra el  kron().-Devuelve el producto del tensor de Kronecker de X
programa y el retorno de esta función nos retorna la señal de e Y. El resultado es una gran matriz formada al tomar todos
audio x y una frecuencia de muestreo fs: los productos posibles entre los elementos de X y los de Y. Si
clear all X es m-por-n e Y es p-por-q, entonces kron (X, Y) es m * p-
close all por-n * q
clc  repmat().-Devuelve una matriz que contiene n copias
%Ejemplo: Cuantificador Uniforme de A en las cotas de fila y columna. El tamaño de B es
nivel=1024; %Numero de niveles size(A)*n cuando A es una matriz.
[x,fs]=audioread('sonido1.wav');  soundsc().-Envía la señal en el vector y (con frecuencia de
muestreo Fs) al altavoz en la PC y la mayoría de las
A continuación, se procede a el ploteo de la señal obtenida y plataformas UNIX.
procesada:
subplot(211) B.Cuantificación No Uniforme, Ley 𝜇
plot(x);xlabel('muestras');ylabel('x(t)'); 1) Explicación del código
title('Señal Original') Primeramente, definimos el número de niveles según se
grid on requiera y después se procede a cargar el archivo de audio el
cual se requiera cuantificar, para facilitar el uso de esta se
Después de ello se procede a realizar el rango de valores para ocupa el comando audioread que permite poder procesar un
cuantificar de acuerdo a los valores máximos y mínimos que audio guardado en la misma carpeta donde se encuentra el
posee la señal, y el número de niveles anteriormente programa y el retorno de esta función nos retorna la señal de
ingresado: audio x y una frecuencia de muestreo fs:
niveles=min(x):(max(x)-min(x))/(nivel- clear all
1):max(x); close all
clc
A continuación, se genera una matriz la cual contiene los %Ejemplo: Cuantificador No Uniforme - Ley
niveles de cuantificación, mediante el producto de tensiones Mu
de Kronecker, entre el vector niveles y un vector columna con nivel=255; %Numero de niveles de
tantos unos como número de filas de x, es decir de la señal cuantificacion
obtenida: mu=1; %Variable ley mu
[tam1,tam2]=size(x); %load Datos %Datos: Señal de voz de
mniveles=kron(niveles',ones(1,tam1)); prueba
[x,fs]=audioread('sonido1.wav');
Graficamos sobre la señal original las líneas correspondientes
a cada nivel: A continuación, se hace uso de la ley de 𝜇 para lo cual
for n=1:nivel utilizamos la función sign el cual proporciona ayuda al
hold on; momento de elegir si el argumento es positivo o negativo,
plot(mniveles(n,:));
4

también se hace uso de la función abs para el valor absoluto, o 3) Defina la variable μ = 50, comente lo observado y la
la existencia de algún número complejo: calidad del audio.

xa=sign(x).*log(1+mu*abs(x))./log(1+mu);
%xa: Señal amplificada

A diferencia del anterior caso, en el primer subplot nos grafica


la señal amplificada gracias a la función de la ley de 𝜇:
subplot(211)
plot(xa);xlabel('muestras');ylabel('x(t)')
;
title('Señal Amplificada')
grid on

En el siguiente subplot en cambio nos mostrará la señal


original:
subplot(212) %Grafico: Señal
cuantificada
plot(x);xlabel('muestras');ylabel('x(t)');
title('Señal Original');
soundsc(xa,fs) %Sonido cuantificado
Ilustración 10 Señal amplificada con μ = 50
2) Defina la variable μ = 255, comente lo observado y la Se observa en la Ilustración 10 que la señal amplificada es
calidad del audio. menor que la anterior teniendo valores de +0.5 y -0.5, se
escucha de mejor manera que el anterior, el ruido mejoro
considerablemente
4) Defina la variable μ = 1 (μ ≈ 0), comente lo observado y la
calidad del audio en comparación a la cuantificación
uniforme.

Ilustración 9 Señal amplificada con μ = 255

Se puede observar en la Ilustración 9 como señal amplificada


alcanza valores de +1 y -1, además no solo amplifica la señal
deseada si no también el ruido que se produce en determinado
audio, el sonido que se escucho es más fuerte que el original,
Ilustración 11 Señal amplificada con μ = 1
pero también difiere en que se escucha mas ruido.
Al observar la ilustración 11 se denota que la señal
amplificada y la señal original son idénticos esto quiere decir
que no hubo mayor amplificación, por tanto, mientras mayor
sea 𝜇 mayor será la amplificación obtenida, pero si los niveles
no son suficientes puede amplificar de mayor manera el ruido,
en este caso aquí no se toma en cuenta el número de niveles y
la señal se cuantifica de acuerdo a la amplitud, evitando las
pérdidas de muestras.
5

C. Cuantificación No Uniforme, Ley A 2) Defina la variable A = 87,6, comente lo observado y la


1) Explicación del código calidad del audio.
En el programa lo primero que se hace es definir el número de
cuantificaciones y el audio que se desea subir al programa
establecido y mediante el comando audioread extraer la señal
de audio como x y la frecuencia de muestreo fs:
clear all
close all
clc

%Ejemplo: Cuantificador No Uniforme - Ley


Mu
nivel=16; %Numero de niveles de
cuantificacion
%load Datos %Datos: Señal de voz de
prueba
[x,fs]=audioread('sonido1.wav');
A=87.56; %Variable ley A

En el cuantificador no uniforme se utiliza la función sign ya


que nos devuelve el signo del argumento ya sea negativo o
positivo, y con abs podemos obtener el valor absoluto o la Ilustración 12 Señal amplificada con A=87,6
magnitud de un número complejo:
%Definicion matematica del estandar Se observa en la ilustración 12 la comparativa de la señal
x1=sign(x).*(1+log(A*abs(x)))/(1+log(A)); amplificada y la señal original, en donde se puede observar
x2=A*abs(x)/(1+log(A)); primeramente que solo existe partes positivas en la señal
x3=(sign(abs(x)-(1/A))+1)/2; amplificada, además que los valores llegan hasta 4,
xa=x1.*x3+x2.*x3; conjuntamente el audio escuchado se escuchó con mucho
ruido, se entendía el mensaje, pero el ruido era demasiado
A continuación, se procede al código antes visto de la amplificado.
demostración de la señal amplificada: 3) Defina la variable A = 1, comente lo observado y la
subplot(211) calidad del audio.
plot(xa);xlabel('muestras');ylabel('x(t)')
;
title('Señal Amplificada')
grid on

En cambio, en la siguiente parte se observa la señal original y


el audio cargado:
subplot(212) %Grafico: Señal
cuantificada
plot(x);xlabel('muestras');ylabel('x(t)');
title('Señal Original');
soundsc(xa,fs) %Sonido cuantificado

Ilustración 13 Señal amplificada con A=1

Se observa en la ilustración 13, que cuando A=1, se pierde


todos los valores de la señal original, es decir que se ha
perdido la señal de audio por lo tanto al momento de escuchar,
no se produjo ningún sonido.
6

4) Defina la variable A = 128, comente lo observado y la


calidad del audio.

Ilustración 14 Señal amplificada con A=128

Al observar la ilustración 14, se denota una amplificación


bastante grande llegando a valores mayores que 5, de igual
manera que cuando A=87,6, se produjo un mayor ruido, que
no dejaba escuchar de forma correcta el audio, es decir que la
amplificación fue muy grande para reproducir en óptimas
condiciones.
5) Realice una comparación de la cuantificación no uniforme
de ley μ con μ = 255 y ley A con A = 87,6.
Observando la ilustración 9 y 12, se observa que existe una
menor amplificación en la ley μ y una mayor con la ley A,
pero se resalta que en cuestión de audio se escuchó con menor
ruido el que poseía menor amplificación, en cambio el otro se
producía un mayor ruido, que no dejaba escuchar de manera
óptima la señal cuantificada obtenida.

V. CONCLUSIONES
 Cuando se tiene un cuantificador uniforme se posee
un intervalo entre un nivel esto quiere decir que el
número de niveles me ayudara a recuperar de mejor
manera la señal original, en cambio en la
cuantificación no uniforme no existe dichos niveles,
en cambio, los valores cercanos a cero son más
probables de no perderse.
 Si se tiene una cuantificación no uniforme a pesar de
que tanto 𝜇 y A tiene que ser altos para poder tener la
información correcta de la señal original, el problema
que ocurres con la amplificación es el ruido que se
produce en esta.

VI. BIBLIOGRAFÍA

[1] L. Frenzel, Principles of electronic communication [2] W. Tomasi, Sitemas de Comunicaciones, México:
systems, Nueva York: McGraw Hill, 2016. Prentice Hall, 2003.
7

usando más de tres muestras previas en el predictor.

DPCM
Bayas Jord y 1 , Romero Nilso n2
Departamento de Eléctrica y Electrónica, Universidad de las Fuerzas Armadas - ESPE
jnbayas @ espe . edu . ec ,nmromero 1@ espe. edu . ec
Teóricamente, es posible hacer el predictor adaptivo en un
sistema DPCM. Sin embargo, se ha encontrado que, para
señales de voz, haciendo el predictor adaptivo, no reduce
apreciablemente el rango dinámico de la entrada del
Resumen— En el presente documento se procedió al análisis del cuantizador, además si el cuantizador es fijo, todavía tendrá
proceso DPCM verificando el comportamiento del mismo, y las los problemas usuales de ruido de sobrecarga por pendiente y
funciones especiales que nos permitieron la correcta evaluación ruido granular.
determinación del error y conjuntamente una optimización. Cuando la señal que se debe codificar presenta mucha
correlación (similitud) entre las muestras adyacentes, como es
VII. INTRODUCCIÓN el caso de la voz, se puede bajar la tasa de bits de los
A.PCM codificadores PCM codificando la diferencia entre las
La modulación por pulsos codificados definido como PCM muestras adyacentes, en lugar del valor de cada muestra.
(en inglés, Pulse Code Modulation) es, en esencia una
conversión analógica a digital de un tipo especial en donde la
información contenida en las muestras instantáneas de una
señal analógica está representada mediante palabras digitales
en un flujo serial de bits. Si la palabra digital tiene n dígitos
binarios, entonces M =2 n palabras de codificación únicas
posibles, correspondiente a cierto nivel de amplitud. Esta
palabra digital representa la amplitud más cercana al valor
muestreado, esto se conoce como cuantización. En lugar de
usar el valor exacto de la muestra de la forma de onda
analógica, la muestra se sustituye por el valor más cercano Figura Codifiación DPCM
permitido, donde existen M valores permitidos y cada uno
corresponde a una de las palabras de codificación. El rango dinámico de la señal diferencia e[n] es mucho más
pequeño que el rango dinámico de la señal de entrada x[n]
B.DPCM
(siempre que las muestras de x[n] estén correlativas entre sí).
Básicamente en DPCM la diferencia entre un valor muestra y Por lo tanto, se necesitan menos niveles para codificar e[n]
su valor predicho es transmitido y debido a que la distribución que para codificar x[n] con el mismo error de cuantificación.
de diferencias es esperada para tener una pequeña varianza Si hay
que la distribución de amplitud de la muestra original. Un menos niveles, hay un número más pequeño de bits por
sistema DPCM se compone de dos partes que deben ser muestra.
diseñadas; el predictor y el cuantizador.
El predictor puede ser fijo o adaptivo. El predictor DPCM fijo VIII.OBJETIVOS
es usualmente un predictor lineal, usa el concepto de
predicción lineal o para sintetizar voz en la recepción final del  Entender e implementar el codificador DPCM mediante el
sistema. En DPCM el predictor lineal es usado para predecir la uso de Matlab.
próxima muestra tal que la diferencia entre el valor predicho
y el valor real pueda ser transmitida. Sobre el receptor final
 Entender los resultados obtenidos en la decodificación
del sistema DPCM, el mismo predictor lineal es usado para
DPCM.
reconstruir la señal de voz original. Ha sido encontrado
experimentalmente que un codificador DPCM con un
IX. MATERIALES
predictor que usa solamente una muestra previa puede obtener
la misma SNR que un estándar PCM, con un bit menos en el  Computador con software Matlab instalado.
cuantizador DPCM. Igualmente, un sistema DPCM con un
predictor que usa tres muestras previas puede igualar el SNR
del PCM con dos bits menos en el cuantizador DPCM.
Normalmente, muy poca ganancia en rendimiento se logra
8

X.ACTIVIDADES set(r,'LineWidth',2);
legend('Señal Original','Señal
A.Reconozca las variables declaradas predictor, partition y Decodificada','Location','NorthOutside');
codebook y explique su utilidad en el programa. e=sum((x-decodedx).^2)/length(x); %Error
 Predictor.- Referencia a un bloque de predicción lineal de cuadratico medio
la forma y (k )=x ¿) donde x es la señal original y y(k) disp(e)
intenta predecir el valor de x(k), este caso particular de y(k) =
x(k − 1) se denomina modulación delta.
El predictor cumple la función que el codificador
DPCM utiliza para producir la predicción adecuada
en cada paso. En vez de cuantificar x en sí mismo, el
codificador DPCM cuantifica el error predictivo, x −
y.
 Partition.- Define varios valores contiguos, así como rangos
de valores dentro del conjunto de los números reales. La
longitud del vector de partición es uno menos que el número
de intervalos de la partición.
 Codebook.-Menciona al cuantificador cual es el valor
común para asignar a las entradas que caen en cada intervalo
de la partición. Un codebook se representa como un vector
cuya longitud es igual al número de intervalos de la partición.

B.Consulte los comandos dpcmenco y dpcmdeco, explique su


funcionalidad.
Figura DPCM
 dpcmenco.- es un codificador que emplea modulación de
código de pulso diferencial (DPCM), este retorna la En la figura 2 se observa la señal original y la señal decodifica
modulación diferencial para codificar una señal (x). Para ello como casi se sobrepone en la señal original, pero si se tiene un
necesita que se especifiquen las variables x (primer parámetro error cuadrático considerable el cual es de 0.0327.
de entrada), codebook (segundo parámetro de entrada),
partition (cuarto parámetro de entrada) y predictor (cuarto C.Consulte el uso del comando dpcmopt y utilícelo en el
parámetro de entrada). programa anterior para reducir el error cuadrático medio,
explique la razón.
 dpcmdeco.- es un decodificador que emplea modulación de  Dpcmopt.-Se utiliza para de optimizar los parámetros de
código de pulso diferencial (DPCM, este retorna la modulación de código de pulso diferencial (DPCM). Esta
demodulación DPCM del vector codificado (encodedx). Para función me devuelve un vector (con las variables predictor,
ello necesita que se especifiquen las variables encodedx codebook y partition) que representa una función de
(primer parámetro de entrada), notebook (segundo parámetro transferencia predictiva de ´ orden M que es apropiada para
de entrada) y predictor (tercer parámetro de entrada). los datos del vector de entrenamiento (x).

1) Simulación del programa 1) Simulación del programa optimizado


clf; clf;
predictor = [0 1]; %y(k)=x(n-1) t = [0:pi/50:2*pi];
partition = [-1:.1:.9]; %señal original diente de sierra
codebook = [-1:.1:1]; x = sawtooth(3*t);
t = [0:pi/50:2*pi]; %codebook inicial
x = sawtooth(3*t); %señal original diente initcodebook = [-1:.1:1];
de sierra %obtener parametros de orden 1.
%cuantizar usndo DPCM [predictor,codebook,partition] =
encodedx = dpcmopt(x,1,initcodebook);
dpcmenco(x,codebook,partition,predictor); %cuantizar usndo DPCM
%recuperacion de la señal modulada encodedx =
decodedx = dpcmenco(x,codebook,partition,predictor);
dpcmdeco(encodedx,codebook,predictor); %recuperacion de la señal modulada
d=plot(t,x); decodedx =
%legend('Señal dpcmdeco(encodedx,codebook,predictor);
Original','Location','NorthOutside'); d=plot(t,x);
hold on hold on
r=plot(t,decodedx,'r--'); r=plot(t,decodedx,'r--');
set(d,'LineWidth',1.5);
9

set(d,'LineWidth',1.5);
set(r,'LineWidth',2);
legend('Señal Original','Señal
Decodificada','Location','NorthOutside');
e=sum((x-decodedx).^2)/length(x); %Error
cuadratico medio
disp(e)

Figura DPCM optimizado

Se observa en la figura 3 como se encuentra optimizado el


programa conjuntamente la aproximación de la señal original
con la decodifica se sobreponen teniendo un error cuadrático
de 8.6801e-04 el cual es mucho menor que el anterior, por lo
tanto, funciono de mejor manera el programa actual que el
proporcionado, esto es debido a él comando dpcmopt porque
este se encarga de generar los parámetros que son óptimos en
la modulación.

XI. CONCLUSIONES
 Se determinó que el proceso DPCM es el encargando
de cuantificar el error que posee la señal original
respecto a la señal decodifica, en tiempo
determinado.
 Se observó que utilizando el comando dpcmopt
tenemos una aproximación más exacta, teniendo
como beneficio un menor error, lo cual nos prevé que
la señal decodifica esta correcta en función de la
original.

XII. BIBLIOGRAFÍA

[1] L. Frenzel, Principles of electronic communication


systems, Nueva York: McGraw Hill, 2016.
[2] W. Tomasi, Sitemas de Comunicaciones, México:
Prentice Hall, 2003.

También podría gustarte