Professional Documents
Culture Documents
SISTEMAS DE COMUNICACIONES
NRC: 3462
Cuantificación
Codificación
Uniforme
getaudiodata: Devuelve los datos de audio grabados asociados con la variable en la que se
asignó audiorecorder.
Cuantificación Uniforme:
Kron: Obtenemos todos los valores de los productos posibles entre sus 2 variables para poder
obtener los niveles de la cuantificación.
Reshape: Para poder obtener los bits serie de la señal codificada en bits.
Stem: Grafica en un punto circular para observar gráficamente los datos de entrada del filtro
coseno levantado.
UNRZ: Codifica la matriz BITS usando un código de no retorno a cero, unipolar con BITRATE
dado. Las salidas son el tiempo T y los valores de señal codificados X.
Ruido (AWGN):
Awgn: Agrega ruido blanco gaussiano, por ejemplo y = awgn (x, snr) añade ruido gaussiano
blanco a la señal vectorial x. El snr es un escalar que especifica la relación señal-ruido por
muestra, en dB. Si x es complejo, awgn añade ruido complejo. Esta sintaxis supone que la
potencia de x es 0 dBW.
Diagrama de ojo:
Awgn: Agrega ruido blanco gaussiano, por ejemplo y = awgn (x, snr) añade ruido gaussiano
blanco a la señal vectorial x. El snr es un escalar que especifica la relación señal-ruido por
muestra, en dB. Si x es complejo, awgn añade ruido complejo. Esta sintaxis supone que la
potencia de x es 0 dBW.
Receptor:
%------------------------------------------------------------------
---
%GRABADOR DE VOZ Y FRECUENCIA DE MUESTREO
%------------------------------------------------------------------
---
r = audiorecorder;
disp('Iniciando')
recordblocking(r,2);
disp('Fin.');
play(r);
x = getaudiodata(r);
fm=8000;
%soundsc(x,fm)
%------------------------------------------------------------------
---
%GRAFICA DE SEÑAL DE MENSAJE
%------------------------------------------------------------------
---
fs=fm;
Ts=1/fs;
t=[(0:(length(x)-1))*Ts];
m=x;
figure(1)
plot(t,m)
xlabel('tiempo(s)')
ylabel('m(t)')
title('Señal de mensaje')
grid on
%------------------------------------------------------------------
---
%GRAFICA DEL ESPECTRO DEL MENSAJE
%------------------------------------------------------------------
---
figure(2)
[frecm,XF]=transfourier(m,fs);
plot(frecm/1000,XF);
xlabel('frecuencia(Khz)')
ylabel('M(f)')
title('Espectro del Mensaje')
grid on
%------------------------------------------------------------------
---
%GRAFICA DEL ESPECTROGRAMA
%------------------------------------------------------------------
---
figure(3)
specgram(m,256,8000)
xlabel('tiempo')
ylabel('frecuencia')
title('Espectrograma')
%------------------------------------------------------------------
---
%CUANTIFICACIÖN UNIFORME
%------------------------------------------------------------------
---
nivel=16; %NUMERO DE NIVELES DE CUANTIFICACION
%soundsc(m,fm)
nbits = log2(nivel);
%DATOS: SENAL DE VOZ
figure(4)
subplot(2,1,1) %GRAFICO: SENAL ORIGINAL
plot(m);xlabel('muestras'); ylabel('x(n)')
grid on
niveles=[min(m):(max(m)-min(m))/(nivel-1):max(m)];
mniveles=kron(niveles',ones(1,size(m,1)));
for n=1:nivel
hold on; plot(mniveles(n,:),'r');
end
y=abs(mniveles-repmat(x',nivel,1));
[distancia xc]=min(y);
xc=xc-1; %SALIDA CUANTIFICADA
subplot(2,1,2) %GRAFICO: SENAL CUANTIFICADA
plot(xc);xlabel('muestras'); ylabel('x_c(n)')
grid on
%soundsc(xc,fm) %SONIDO CUANTIFICADO
%------------------------------------------------------------------
---
%CODIFICACIÓN
%------------------------------------------------------------------
---
% Generar bits
nbits=log2(nivel); %CODIFICACION
bits=decimal_a_binario(xc,nbits);
bits_serie=reshape(bits',size(bits,1)*size(bits,2),1);
bits_serie=bits_serie';
bitsm=2.*bits_serie-1; %bitsmodulados
%bitsm=bitsm';
%% Genero Ruido
sigma=0.1;
aux1=length(bits_serie);
ruido=normrnd(0,sigma,1,aux1);
y=bitsm+ruido;
%% Receptor
bitsmr=sign(y);
bitsr=(bitsmr+1)/2;
%normalizo el vector
sonido=1/max(sonido)*sonido;
%grafico en funcion del tiempo
figure (6);
plot(sonido,'r');
ylim([-0.1 1.1]);
TRANSFOURIER:
function [frec,XF]=transfourier(xt,fs)