Está en la página 1de 16

%************************************************************************

%LABORATORIO DE MODULACION SSB-AM


%************************************************************************
%************************************************************************
%REALIZADO POR: Jos Gabriel Fernndez Carazo
% A21941
% Escuela de Ingeniera Elctrica
% Facultad de Ingeniera
% Universidad de Costa Rica
%************************************************************************
%Ultima modificacin: Julio del 2007.
%************************************************************************
%************************************************************************
%Se limpia el workspace de MATLAB y las variables en uso.
clc;
clear;
%************************************************************************
%************************************************************************
%MODULACION SSB-AM
%************************************************************************
%Punto (1) y (2)
%************************************************************************
%Modulacin en amplitud de banda lateral con portadora suprimida
Nfft=1024; %Cantidad de puntos a calcular para la FFT
L_medio=500; %Mitad de la cantidad de muestras a recolectar
fm=8000; %Frecuencia de muestreo

treq=2*L_medio/fm; %Tiempo requerido para recolectar muestras


fs=((2*L_medio-1)/treq); %Divisin de tiempo para recolectar muestras
t=0:1/fs:treq; %Vector de muestras a recolectar
%Vector de frecuencias para los espectros en frecuencia
M=Nfft/2;
faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado
faux(1:M)=-M:-1; %Vector de frecuencias ordenado
f=fm*faux/(Nfft); %Vector de frecuencias normalizado
%Parmetros de las seales a utilizar
fc=2000; %Frecuencia de la portadora
Ap=2; %Amplitud de la portadora
Am=0.5; %Amplitud de la seal a modular
fmt=600; %Frecuencia de la seal a modular
%Seal a modular
mt=Am*cos(2*pi*fmt*t);
%Seal portadora
yc=Ap*sin(2*pi*fc*t);
%Se crea una seal DSBSC-AM
at=mt.*yc;
%MODULACION SSB UTILIZANDO LA BANDA LATERAL INFERIOR
%Se pasa por un filtro pasobajo con frecuencia de corte igual a la
%portadora para dejar pasar solo las seales con frecuencias menores a la
%frecuencia de la portadora
w=fc; %Frecuencia de corte del filtro paso bajo
N1=64; %Orden del filtro
b1=fir1(N1,w/(fm/2),'low'); %Diseo del filtro

h1=filter(b1,1,at); %Se filtra la seal


%Se calcula la respuesta en frecuencia del filtro
[H1 f1]=freqz(b1,1,2048,fm);
%MODULACION SSB UTILIZANDO LA BANDA LATERAL SUPERIOR
%Se pasa por un filtro pasoalto con frecuencia de corte igual a la
%portadora para dejar pasar solo las seales con frecuencias mayores a la
%frecuencia de la portadora
w=fc; %Frecuencia de corte del filtro paso bajo
N2=64;
b2=fir1(N2,w/(fm/2),'high'); %Diseo del filtro
h2=filter(b2,1,at); %Se filtra la seal
%Se calcula la respuesta en frecuencia del filtro
[H2 f2]=freqz(b2,1,2048,fm);
%************************************************************************
%************************************************************************
%Punto (3)
%************************************************************************
%Se grafican las seales producidas por el generador
figure(1)
subplot(3,1,1);
plot(t,mt);
axis([0 treq -1 1]);
txt=strcat('Seal a modular con una frecuencia de ',num2str(fmt),' Hz');
title(txt);
xlabel('Tiempo (segundos)');
ylabel('Amplitud');

txt=strcat('fmuestreo=',num2str(fs),' Hz');
legend(txt);
grid on;
subplot(3,1,2);
plot(t,yc);
xlim([0 treq/2]);
txt=strcat('Seal portadora con una frecuencia de ',num2str(fc),' Hz');
title(txt);
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
txt=strcat('fmuestreo=',num2str(fs),' Hz');
legend(txt);
grid on;
subplot(3,1,3);
plot(t,at);
axis([0 treq/2 -1 1]);
title('Seal DSBSC-AM generada');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
txt=strcat('fmuestreo=',num2str(fs),' Hz');
legend(txt);
grid on;
%Respuesta en frecuencia de los filtros pasobajo y paso alto
figure(2)
subplot(2,1,1)
plot(f1,20*log10(abs(H1)+eps),'-m');

txt=strcat('Respuesta en magnitud de un filtro FIR pasobajo N=


',num2str(N1));
title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');
txt=strcat('Frecuencia de corte ',num2str(w),' Hz');
legend(txt);
grid on;
subplot(2,1,2)
plot(f1,unwrap(angle(H1)),'-m');
txt=strcat('Respuesta de fase de un filtro FIR pasobajo N=
',num2str(N1));
title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');
txt=strcat('Frecuencia de corte ',num2str(w),' Hz');
legend(txt);
grid on;
figure(3)
subplot(2,1,1)
plot(f2,20*log10(abs(H2)+eps),'-r');
txt=strcat('Respuesta en magnitud de un filtro FIR pasoalto N=
',num2str(N2));
title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');

txt=strcat('Frecuencia de corte ',num2str(w),' Hz');


legend(txt);
grid on;
subplot(2,1,2)
plot(f2,unwrap(angle(H2)),'-r');
txt=strcat('Respuesta de fase de un filtro FIR pasoalto N=
',num2str(N2));
title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');
txt=strcat('Frecuencia de corte ',num2str(w),' Hz');
legend(txt);
grid on;
%Seales despus de pasar por los filtros pasobajo y pasoalto
figure(4)
subplot(3,1,1);
plot(t,at);
xlim([0 treq/2]);
title('Seal DSBSC-AM generada');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
txt=strcat('fmuestreo=',num2str(fs),' Hz');
legend(txt);
grid on;
subplot(3,1,2);
plot(t,h1,'-m');

xlim([0 treq/2]);
title('Salida del filtro pasobajo selector de la banda lateral
inferior');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
legend('SSB banda lateral inferior');
grid on;
subplot(3,1,3);
plot(t,h2,'-r');
xlim([0 treq/2]);
title('Salida del filtro pasobajo selector de la banda lateral
superior');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
legend('SSB banda lateral superior');
grid on;
%************************************************************************
%************************************************************************
%Punto (4)
%************************************************************************
%CALCULO DE LOS ESPECTROS
%Clculo de la DFT utilzando la FFT para la seal DSBSC-AM
Y1=fft(at,Nfft); %FFT de Nfft puntos
Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT
norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud
Yf1=unwrap(angle(Y1)); %Clculo de las componentes de fase

%Clculo de la DFT utilzando la FFT para la salida del filtro pasobajo


%selector de la banda lateral inferior
Y2=fft(h1,Nfft); %FFT de Nfft puntos
Y2=fftshift(Y2); %Reordenamiento de los valores de la FFT
norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud
Yf2=unwrap(angle(Y2)); %Clculo de las componentes de fase
%Clculo de la DFT utilzando la FFT para la salida del filtro pasoalto
Y3=fft(h2,Nfft); %FFT de Nfft puntos
Y3=fftshift(Y3); %Reordenamiento de los valores de la FFT
norm3=max(abs(Y3)); %Para normalizar el espectro en magnitud
Yf3=unwrap(angle(Y3)); %Clculo de las componentes de fase
%Espectros de frecuencia de las seales
figure(5)
subplot(3,1,1);
plot(f,abs(Y1)/norm1)
title('Espectro continuo en magnitud de la seal de entrada');
xlabel('Frecuencia (Hz)');
ylabel('Magnitud normalizada |FFT|');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,2);
plot(f,abs(Y2)/norm2,'-m');
title('Espectro continuo en magnitud de la seal SSB de banda lateral
inferior');
xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');


txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,3);
plot(f,abs(Y3)/norm3,'-r');
title('Espectro continuo en magnitud de la seal SSB de banda lateral
superior');
xlabel('Frecuencia (Hz)');
ylabel('Magnitud normalizada |FFT|');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
figure(6)
subplot(3,1,1);
plot(f,Yf1);
title('Espectro continuo de fase de la seal de entrada');
xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,2);
plot(f,Yf2,'-m');
title('Espectro continuo de fase de la seal SSB de banda lateral
inferior');

xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,3);
plot(f,Yf3,'-r');
title('Espectro continuo de fase de la seal SSB de banda lateral
superior');
xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
%************************************************************************
%************************************************************************
%DEMODULACION SSB-AM
%************************************************************************
%Punto (1) y (2)
%************************************************************************
%Se implementa el modulador de la figura 3.7 del laboratorio
%DEMODULACION SSB DE BANDA LATERAL INFERIOR
mssbinf=h1;
%Se modula la seal por la portadora nuevamente
a2t=mssbinf.*yc;
%Luego esta seal se pasa por un filtro pasobajo con una frecuencia de

%corte de tal manera que deje pasar la seal original


N3=64;
b3=fir1(N3,fmt/(fm/2),'low');
h3=filter(b3,1,a2t);
%Se calcula la respuesta en frecuencia del filtro
[H3 f3]=freqz(b3,1,2048,fm);
%DEMODULACION SSB DE BANDA LATERAL SUPERIOR
mssbsup=h2;
%Se modula la seal por la portadora nuevamente
a3t=mssbsup.*yc;
%Luego esta seal se pasa por un filtro pasobajo con una frecuencia de
%corte de tal manera que deje pasar la seal original
h4=filter(b3,1,a3t);
%************************************************************************
%************************************************************************
%Punto (3)
%************************************************************************
figure(7)
subplot(3,1,1);
plot(t,mt);
axis([0 treq/2 -1 1]);
txt=strcat('Seal a modular con una frecuencia de ',num2str(fmt),' Hz');
title(txt);
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
txt=strcat('fmuestreo=',num2str(fs),' Hz');

legend(txt);
grid on;
subplot(3,1,2);
plot(t,h3);
xlim([0 treq/2]);
title('Seal reconstruida a partir de una seal SSB de banda lateral
inferior');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
legend('Seal reconstruida por SSB inferior');
grid on;
subplot(3,1,3);
plot(t,h4);
xlim([0 treq/2]);
title('Seal reconstruida a partir de una seal SSB de banda lateral
superior');
xlabel('Tiempo (segundos)');
ylabel('Amplitud');
legend('Seal reconstruida por SSB superior');
grid on;
%Respuesta en frecuencia de los filtros pasobajo y paso alto
figure(8)
subplot(2,1,1)
plot(f3,20*log10(abs(H3)+eps),'-m');
txt=strcat('Respuesta en magnitud de un filtro FIR pasobajo N=
',num2str(N3));

title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');
txt=strcat('Frecuencia de corte ',num2str(fmt),' Hz');
legend(txt);
grid on;
subplot(2,1,2)
plot(f3,unwrap(angle(H3)),'-m');
txt=strcat('Respuesta de fase de un filtro FIR pasobajo N=
',num2str(N3));
title(txt);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud (dB)');
txt=strcat('Frecuencia de corte ',num2str(fmt),' Hz');
legend(txt);
grid on;
%************************************************************************
%************************************************************************
%Punto (4)
%************************************************************************
%CALCULO DE LOS ESPECTROS
%Clculo de la DFT utilzando la FFT para la seal a modular
Y4=fft(mt,Nfft); %FFT de Nfft puntos para la seal "mt"
Y4=fftshift(Y4); %Reordenamiento de los valores de la FFT
norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud
Yf4=unwrap(angle(Y4)); %Clculo de las componentes de fase

%Clculo de la DFT utilzando la FFT para la salida del filtro pasobajo


%selector de la banda lateral inferior
Y5=fft(h3,Nfft); %FFT de Nfft puntos
Y5=fftshift(Y5); %Reordenamiento de los valores de la FFT
norm5=max(abs(Y5)); %Para normalizar el espectro en magnitud
Yf5=unwrap(angle(Y5)); %Clculo de las componentes de fase
%Clculo de la DFT utilzando la FFT para la seal DSBSC-AM
Y6=fft(h4,Nfft); %FFT de Nfft puntos
Y6=fftshift(Y6); %Reordenamiento de los valores de la FFT
norm6=max(abs(Y6)); %Para normalizar el espectro en magnitud
Yf6=unwrap(angle(Y6)); %Clculo de las componentes de fase
%Espectros de frecuencia de las seales
figure(9)
subplot(3,1,1)
plot(f,abs(Y4)/norm4)
title('Espectro continuo en magnitud de la seal de entrada');
xlabel('Frecuencia (Hz)');
ylabel('Magnitud normalizada |FFT|');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,2)
plot(f,abs(Y5)/norm5,'-m')
title('Espectro continuo en magnitud de la seal por demodulacin SSB de
banda lateral inferior');
xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');


txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,3)
plot(f,abs(Y6)/norm6,'-r')
title('Espectro continuo en magnitud de la seal por demodulacin SSB de
banda lateral superior');
xlabel('Frecuencia (Hz)');
ylabel('Magnitud normalizada |FFT|');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
figure(10)
subplot(3,1,1);
plot(f,Yf4);
title('Espectro continuo de fase de la seal de entrada');
xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,2);
plot(f,Yf5,'-m');
title('Espectro continuo de fase de la seal SSB de banda lateral
inferior');

xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
subplot(3,1,3);
plot(f,Yf6,'-r');
title('Espectro continuo de fase de la seal SSB de banda lateral
superior');
xlabel('Frecuencia (Hz)');
ylabel('Fase (rads)');
txt=strcat('Nfft=',num2str(Nfft),' puntos');
legend(txt);
grid on;
%************************************************************************

También podría gustarte