close all

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO
%CURSO: TELECOMUNICAICONES II SEMESTRE 2013-I
%ING. FRANCISCO SEGURA ALTAMIRANO
%LAMBAYEQUE 2013
%Simulacion de modulacion PCM con cuatizacion Uniforme de una seal con una
%frecuencias Fmax.
Fmax=100; %Frecuencia de la Seal Analogica
Fs=2*Fmax; %Frecuencia de muestreo
Ts=1/Fs;
%Periodo de muestreo
N=100;
%Numero de muestras
nb=5;
%Tamao de la palabra de la codificacion para cada muestra
L=2^nb-1
%Numero de niveles permitidos
x=randi(L,N,1); %Se genera las muestras aleatoria de la seal
xpcm=dec2bin(x)-48; %se codifica en binario natural
xpcm=xpcm(:); %se coloca la seal PCM en un vector
%Aca es necesario calcular la frecuencia de muestreo de la seal PCM
%resultante que esta relacionada con la Fs de la seal y el numero de bit y
%el numero de puntos que se usara para construir la representacion digital
%de la cadena PCM.
Np=20 %Cada pulso se conformara por 20 puntos.
Ts1=(Ts/nb)*(1/Np);
Fs1=1/Ts1;
%Con la informacin de Fs1 y Ts1 y sabiendo el numero de muestras y la
%cantiadad de bits por muestra se realiza el barrido de tiempo
t=0:Ts1:N*nb*Np*Ts1-Ts1;
%Tambien para mostrar correctamente el espectro es necesario realizar el
%barrido de frecuencias necesarios asi
f=linspace(-Fs1/2,Fs1/2,length(t));
%Se usara codificacion NRZ para esta parte
pnrz=ones(1,Np);
%Pulso basico para transmision
%Realizamos la sealizacion
senpcm=pnrz'*xpcm';
%conertimos a un vector
senpcm=senpcm(:);
%graficamos
subplot(321)
plot(t,senpcm)
title('Seal PCM en el tiempo')
%Podemos obtener mas informacion si observamos esta seal en el dominio de
%la frecuecia
SENPCM=fft(senpcm)/length(senpcm);
%graficamos
subplot(322)
plot(f,fftshift(abs(SENPCM))/max(abs(SENPCM)))
title('Seal PCM en la frecuencia y filtro ideal')
%Segun nuestros calculos vtx=Fs*5=1000bps, entonces BWtx=vtx/2 (NRZ)
%BWtx=500Hz
hold on
fc_ideal=500; %Frecuencia de corte ideal, Puede cambiarse para probar
H=(abs(f)<=fc_ideal); %se construye un filtro ideal
plot(f,H,'r','linewidth',3);
legend('Seal PCM','Filtro Ideal')
SENPCM_FIL=fftshift(H').*(SENPCM); %se realiaza el fitrado de la seal
subplot(323)
plot(f,fftshift(abs(SENPCM_FIL))/max(abs(SENPCM_FIL)));
title('Seal PCM filtrada en la frecuencia')
%Calculamos la transformada inversa y observamos la seal PCM
senpcm_fil=ifft(SENPCM_FIL)*length(SENPCM_FIL);

title('Seal PCM filtrada con filtro RC') senpcm_filrc=ifft(SENPCM_FILrc)*length(SENPCM_FILrc).fftshift(abs(SENPCM_FILrc))).2) legend('Seal filtrada'. Hrc=1. %Funcion de transferencia del filtro SENPCM_FILrc=fftshift(Hrc').senpcm.senpcm.'r'.'Seal Original') %Ahora consideraremos el caso mas real al usar un filtro RC con frecuencia %de corte igual a la del ancho de banda de transmission calculado fcorte=500.*(SENPCM).real(senpcm_filrc)) title('Seal PCM filtrada en el tiempo') hold on plot(t. subplot(325) plot(f.'Seal Original') .2) legend('Seal filtrada'./(1+j*f/fcorte).'r'.real(senpcm_fil)) title('Seal PCM filtrada en el tiempo') hold on plot(t. subplot(326) plot(t.'linewidth'.'linewidth'.subplot(324) plot(t.