0% encontró este documento útil (0 votos)
57 vistas4 páginas

Matlab PCM Cuantizacion DPCM

Este documento presenta los pasos para implementar la modulación PCM (Pulse Code Modulation) y DPCM (Differential Pulse Code Modulation) de señales. En la primera sección, se muestra el proceso completo de PCM, incluyendo la cuantización uniforme y codificación binaria de una señal analógica de entrada. En la segunda sección, se implementa la técnica DPCM para la transmisión y reconstrucción de una señal senoidal. Finalmente, la tercera sección analiza el efecto del filtrado en la señal

Cargado por

unitecvzla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas4 páginas

Matlab PCM Cuantizacion DPCM

Este documento presenta los pasos para implementar la modulación PCM (Pulse Code Modulation) y DPCM (Differential Pulse Code Modulation) de señales. En la primera sección, se muestra el proceso completo de PCM, incluyendo la cuantización uniforme y codificación binaria de una señal analógica de entrada. En la segunda sección, se implementa la técnica DPCM para la transmisión y reconstrucción de una señal senoidal. Finalmente, la tercera sección analiza el efecto del filtrado en la señal

Cargado por

unitecvzla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

1.

- MOD PCM

%MODULACIÓN PCM
clc; %limpiar la pantalla de comandos de Matlab
close; %cerrar las variables usadas
clear; %limpia estas variables
n = input('Introduzca el número de bits para el sistema PCM: ' );
n1 = input('Introduzca el número de muestras a tomar: ' );
L = 2^n;
x = 0:2*pi/n1:4*pi; %Las posiciones que va a ir tomando nuestra señal
s = 8*sin(x); %Señal de entrada
subplot(3,1,1); %Posición de la gráfica
plot(s); %Señal de entrada
title('Señal Analógica');
ylabel('Amplitud');
xlabel('Tiempo');
subplot(3,1,2);
stem(s); %Muestreo
grid on;
title('Señal Muestreada');
ylabel('Amplitud');
xlabel('Tiempo');
%Proceso de Cuantización para la generación de la señal PCM.
vmax=8; %Valor máximo de s
vmin=-vmax; %Valor mínimo
del=(vmax-vmin)/L;
part=vmin:del:vmax; %Valores que toma a lo largo de nuestra señal, dividiendo la
Amplitud
code=vmin-(del/2):del:vmax+(del/2); %Conteo de valores cuantificados
[ind,q]=quantiz(s,part,code); %Proceso de Cuantización
l1=length(ind);
l2=length(q);
for i=1:l1
if(ind(i)~=0);
ind(i)=ind(i)-1;
end
i=i+1;
end
for i=1:l2;
if(q(i)==vmin-(del/2))
q(i)=vmin+(del/2);
end
end
subplot(3,1,3);
stem(q);
grid on;
title('Cuantización de la Señal' );
ylabel('Amplitud');
xlabel('Tiempo');
%Proceso de Codificación
figure
code=de2bi(ind,'left-msb');
k=1;
for i=1:l1
for j=1:n
coded(k)=code(i,j);
j=j+1;
k=k+1;
end
i=i+1;
end
subplot(2,1,1);
grid on;
stairs(coded); %Toma los valores de un vector para poder graficarlas
axis([0 100 -2 3]);
grid on;
title('Señal Codificada');
ylabel('Amplitud');
xlabel('Tiempo');

MOD DPCM

clear
%DPCM Transmitter and Receiver
%Input sinusoidal signal

fm=4; %frequency
fs=20*fm; %Sampling frequency
am=2; %Amplitude
t=0:1/fs:1; %time
x=am*cos(2*pi*fm*t); %Sinusoidal signal
figure (1);
plot(t,x,'r-'); hold on;
xlabel('Time');
ylabel('Amplitude');
for n=1:length(x)
if n==1
e(n)=x(n);
eq(n)=round(e(n));
xq(n)=eq(n);
else
e(n)=x(n)-xq(n-1);
eq(n)=round(e(n));
xq(n)=eq(n)+xq(n-1);
end
end

%DPCM Receiver
for n=1:length(x)
if n==1
xqr(n)=eq(n);
else
xqr(n)=eq(n)+xqr(n-1);
end
end
plot(t,xqr,'k-');
xlabel('Time');
ylabel('Amplitude');
legend('Original','Reconstructed');
%Low pass filtering
[num den]=butter(2,4*fm/fs); %Butterworth filter
rec_op=filter(num,den,xqr); %Low pass filtering
figure(2);
plot(t,rec_op,'k-');
xlabel('Time');
ylabel('Amplitude');
title('Smoothed Signal');
CUANTIFICANDO PCM

close all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%UNIVERSIDAD DEL ZULIA
%CURSO: COMUNICACIONES I
%ALUMNO ABRAHAM PEREZ
%ZULIA 2023
%Simulacion de modulacion PCM con cuatizacion Uniforme de una señal con una
%frecuencias Fmax.
Fmax=100; %Frecuencia de la Señal Analogica
Fs=2*Fmax; %Frecuencia de muestreo
Ts=1/Fs; %Periodo de muestreo
N=100; %Numero de muestras
nb=5; %Tamaño 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 señal
xpcm=dec2bin(x)-48; %se codifica en binario natural
xpcm=xpcm(:); %se coloca la señal PCM en un vector
%Aca es necesario calcular la frecuencia de muestreo de la señal PCM
%resultante que esta relacionada con la Fs de la señal 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 información 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 señalizacion
senpcm=pnrz'*xpcm';
%conertimos a un vector
senpcm=senpcm(:);
%graficamos
subplot(321)
plot(t,senpcm)
title('Señal PCM en el tiempo')
%Podemos obtener mas informacion si observamos esta señal en el dominio de
%la frecuecia
SENPCM=fft(senpcm)/length(senpcm);
%graficamos
subplot(322)
plot(f,fftshift(abs(SENPCM))/max(abs(SENPCM)))
title('Señal 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('Señal PCM','Filtro Ideal')
SENPCM_FIL=fftshift(H').*(SENPCM); %se realiaza el fitrado de la señal
subplot(323)
plot(f,fftshift(abs(SENPCM_FIL))/max(abs(SENPCM_FIL)));
title('Señal PCM filtrada en la frecuencia')
%Calculamos la transformada inversa y observamos la señal PCM
senpcm_fil=ifft(SENPCM_FIL)*length(SENPCM_FIL);
subplot(324)
plot(t,real(senpcm_fil))
title('Señal PCM filtrada en el tiempo')
hold on
plot(t,senpcm,'r','linewidth',2)
legend('Señal filtrada','Señal 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;
Hrc=1./(1+j*f/fcorte); %Funcion de transferencia del filtro
SENPCM_FILrc=fftshift(Hrc').*(SENPCM);
subplot(325)
plot(f,fftshift(abs(SENPCM_FILrc)));
title('Señal PCM filtrada con filtro RC')
senpcm_filrc=ifft(SENPCM_FILrc)*length(SENPCM_FILrc);
subplot(326)
plot(t,real(senpcm_filrc))
title('Señal PCM filtrada en el tiempo')
hold on
plot(t,senpcm,'r','linewidth',2)
legend('Señal filtrada','Señal Original')

También podría gustarte