Está en la página 1de 8

% Parámetros temporales

iIni=0; % Instante inicial


tFin=10; % Instante final

fc=50; % Frecuencia de portadora


faseTx=0; % Fase de la portadora en transmisión
faseRx=0.0*pi; % Fase de la portadora en recepción
fm=5; % Frecuencia de la señal moduladora sinusoidal

fs=1000; % Frecuencia de muestreo


Ts=1/fs; % Tiempo de muestreo

stdRuido=0.2; % Desviación estándar de la señal discreta de ruido (gausiano)

nPuntosTexto=20;
nFFT=4*4096; % Número de puntos de la FFT para la representación frecuencial

% Variable temporal
t=iIni:Ts:tFin;
% Portadora
c=cos(2*pi*fc*t+faseTx);
% Señal moduladora
m=sin(2*pi*fm*t);
% Señal modulada de doble banda lateral (DBL)
sDBL = ammod(m,fc,fs,faseTx);

%--------------------------------------------------------------------------
close all
clc
disp(' ')
disp('---------------------------------------------------------------------')
disp(' Demostrador - Modulación de amplitud de doble banda lateral (DBL)')
disp('---------------------------------------------------------------------')
disp(' ')
disp('Se van a representar varias señales.')
disp('Se recomienda ir colocando las figuras según se generan')
disp('de tal forma que se puedan ver todas de forma simultánea.')
disp(' ')
disp(' Pulse una tecla para comenzar...')
pause
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Se dibuja la señal portadora
%--------------------------------------------------------------------------
figure(1),plot(t,c)
etiquetas(nPuntosTexto,'Tiempo (t, segundos)','c(t)','Señal portadora')

clc
disp(' ')
disp(['Se muestra la señal portadora (frecuencia ',num2str(fc),' Hz).'])
disp(' ')
disp(' Pulse una tecla para resaltar el intervalo entre 2 seg y 2,5 seg...')
pause
figure(1),xlim([2,2.5])
pause
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
% Se representa la señal moduladora
%--------------------------------------------------------------------------
figure(2),plot(t,m)
etiquetas(nPuntosTexto,'Tiempo (t, seg)','m(t)','Señal moduladora')
clc
disp(' ')
disp('La señal moduladora, que se acaba de representar, es una ')
disp(['sinusoide de frecuencia ',num2str(fm),' Hz'])
disp(' ')
disp(' Pulse una tecla para resaltar el intervalo entre 2 seg y 2,5 seg...')
pause
figure(2)
ha=gca;
lineas=get(ha,'Children');
set(lineas(1),'LineWidth',3)
xlim([2,2.5])

%--------------------------------------------------------------------------
% Se representa la señal modulada (DBL)
%--------------------------------------------------------------------------
clc
disp(' ')
disp('La señal modulada de doble banda lateral (DBL) es ')
disp('el producto entre la señal portadora y la señal moduladora.')
disp(' ')
disp(' Pulse una tecla para verla...')
pause
figure(3),plot(t,c,'r',t,sDBL,'b')
ha=gca;
lineas=get(ha,'Children');
set(lineas(1),'LineWidth',3)

etiquetas(20,'Tiempo (t, seg)','s_{DBL}(t)','Señal modulada de doble banda lateral


(DBL)')

clc
disp(' ')
disp(' Pulse una tecla para resaltar el intervalo entre 2 seg y 2,5 seg...')
pause
figure(3),xlim([2,2.5])
disp(' ')
disp('En rojo (trazo fino) se ha superpuesto la señal portadora, para ayudar')
disp('a comprender las características de esta modulación')
pause

%--------------------------------------------------------------------------
% RESPUESTAS EN FRECUENCIA
%--------------------------------------------------------------------------
clc
disp(' ')
disp('A continuación se representarán respuestas en frecuencia.')
disp('Se utilizará el periodograma como estima de las densidades')
disp('espectrales de frecuencia.')
disp(' ')
disp(' Pulse una tecla para ver estas respuestas...')
pause

%--------------------------------------------------------------------------
% Respuesta de la señal moduladora
%--------------------------------------------------------------------------
figure(4)
periodogram(m,[],nFFT,fs,'power','centered');
etiquetas(20,'Frecuencia (Hz)','S_M(jw)','Estima de la DEP de m(t) (periodograma)')
ylim([-70,0])
xlim([-20,20])
clc
disp(' ')
disp('Esta es la densidad espectral de potencia de la señal')
disp('moduladora (señal de información)')
pause

%--------------------------------------------------------------------------
% Respuesta de la señal modulada
%--------------------------------------------------------------------------
figure(5)
periodogram(sDBL,[],nFFT,fs,'power','centered');
etiquetas(20,'Frecuencia (Hz)','S_S(jw)','Estima de la DEP de s(t) (periodograma)')
clc
disp(' ')
disp('Esta es la densidad espectral de potencia de la señal')
disp('modulada en doble banda lateral (DBL)')
disp(' ')
disp(' Pulse una tecla para resaltar la banda de interés...')
pause
ylim([-70,0])
xlim([30,70])
clc
disp(' ')
disp('Tenga en cuenta que sólo se están representando las frecuencias')
disp('positivas (para frecuencias negativas la respuesta es simétrica).')
pause

%--------------------------------------------------------------------------
% TRANSMISIÓN - CANAL ADITIVO GAUSIANO (SEÑAL + RUIDO GAUSIANO)
%--------------------------------------------------------------------------
clc
disp(' ')
disp(' ')
disp('A continuación se simula la transmisión de la señal, con la')
disp('suma de ruido térmico (ruido blanco y gausiano).')
disp(' ')
disp(' Pulse una tecla para continuar...')
disp(' ')
pause

%--------------------------------------------------------------------------
% Se suma ruido durante la transmisión (no se incluye atenuación)
%--------------------------------------------------------------------------
ruido = stdRuido*randn(size(t));

figure(6),plot(t,ruido)
ha=gca;
lineas=get(ha,'Children');
set(lineas(1),'LineWidth',3)

etiquetas(20,'Tiempo (t, seg)','n(t)','Señal de ruido')


figure(6),xlim([2,2.5])
clc
disp('Este es un ejemplo de señal de ruido (en el dominio temporal)')
disp(' ')
disp('A continuación se representa en frecuencia (pulse una tecla)...')
pause

%--------------------------------------------------------------------------
% Se muestra la respuesta en frecuencia del ruido
%--------------------------------------------------------------------------
figure(7)
periodogram(ruido,[],nFFT,fs,'power','centered');
etiquetas(20,'Frecuencia (Hz)','S_n(jw)','Estima de la DEP de n(t) (periodograma)')
clc
disp(' ')
disp('Esta es la densidad espectral de potencia del ruido.')
pause

%--------------------------------------------------------------------------
% DEMODULACIÓN
%--------------------------------------------------------------------------
clc
disp(' ')
disp('La suma de señal modulada y ruido se demodula con un demodulador')
disp('coherente (misma fase que la portadora del transmisor).')
disp(' ')
disp('En primer lugar se demodulará sin realizar un filtrado previo para')
disp('limitar la potencia del ruido (equivalente a asumir un filtrado con')
disp('un ancho de banda de la mitad de la frecuencia de muestreo, en este')
disp('caso, un ancho de banda de 500 Hz')
pause

%--------------------------------------------------------------------------
% DEMODULACIÓN DE LA SEÑAL RUIDOSA - Sin filtrar
%--------------------------------------------------------------------------
% Señal con ruido
sDBLn = sDBL + ruido;
% Demodulación
d=amdemod(sDBLn,fc,fs,faseRx);

figure(8),plot(t,m,'r',t,d,'b')
ha=gca;
lineas=get(ha,'Children');
set(lineas(1),'LineWidth',3)
xlim([2,2.5])

etiquetas(20,'Tiempo (t, seg)','d(t)','Señal demodulada (sin filtrar antes^\ast)')

indices=find((t>1)&(t<=4));
estimaSNR = cov(m(indices))/cov(d(indices)-m(indices));
estimaSNR_dB = 10*log10(estimaSNR);

disp(' ')
disp('En la figura se muestran la señal moduladora original y la señal')
disp('demodulada. El demodulador coherente compensa el factor de escala')
disp('de la mitad de la amplitud de la portadora.')
disp(' ')
disp(['Estima de la relación S/N = ',num2str(estimaSNR),'
(',num2str(estimaSNR_dB),' dB)'])
disp(' ')
pause

disp('A continuación se utiliza un filtro de ruido previo a la demodulación.')


disp('Aunque teóricamente la banda de paso es 45-55 Hz, se filtra entre')
disp('30-70 Hz ya que los filtros no son ideales.')
pause

%--------------------------------------------------------------------------
% DEMODULACIÓN DE LA SEÑAL RUIDOSA - Filtrando antes de demodular
%--------------------------------------------------------------------------
% Se filtra la señal antes de demodular en la banda de paso
% Aunque teóricamente la banda de paso es 45-55 Hz,
% se filtra entre 30-70 Hz ya que los filtros no son ideales.
sFilt=bandpass(sDBLn,[30,70],fs,'ImpulseResponse','iir','Steepness',0.99);
% Demodulación
df=amdemod(sFilt,fc,fs,faseRx);

figure(9),plot(t,m,'r',t,df,'b')
ha=gca;
lineas=get(ha,'Children');
set(lineas(1),'LineWidth',3)
xlim([2,2.5])

etiquetas(20,'Tiempo (t, seg)','d(t)','Señal demodulada (filtrando antes)')

indices=find((t>1)&(t<=4));
estimaSNRf = cov(m(indices))/cov(df(indices)-m(indices));
estimaSNRf_dB = 10*log10(estimaSNRf);

disp(' ')
disp('En la figura se muestran la señal moduladora original y la señal')
disp('demodulada con un filtrado previo a la demodulación.')
disp(' ')
disp(['Estima de la S/N con filtrado previo S/N= ',num2str(estimaSNRf),'
(',num2str(estimaSNRf_dB),' dB)'])

% Parámetros temporales
iIni=0; % Instante inicial
tFin=10; % Instante final

fc=50; % Frecuencia de portadora


faseTx=0; % Fase de la portadora en transmisión
fm=5; % Frecuencia de la señal moduladora sinusoidal

fs=1000; % Frecuencia de muestreo


Ts=1/fs; % Tiempo de muestreo

stdRuido=0.1; % Nueva desviación estándar de la señal discreta de ruido


(gausiano)

nPuntosTexto=20;
nFFT=4*4096; % Número de puntos de la FFT para la representación frecuencial

% Valores de fase en la portadora del receptor


fasesRx = [0, pi/4, -pi/4, pi/2, -pi/2, 3*pi/4, -3*pi/4, pi];

% Matriz para almacenar los resultados


resultados = zeros(length(fasesRx), 2);
% Variable temporal
t=iIni:Ts:tFin;
% Señal moduladora
m=sin(2*pi*fm*t);
% Señal modulada de doble banda lateral (DBL)
sDBL = ammod(m,fc,fs,faseTx);

% Se suma ruido durante la transmisión (no se incluye atenuación)


ruido = stdRuido*randn(size(t));
% Señal con ruido
sDBLn = sDBL + ruido;

% Para cada valor de fase en la portadora del receptor


for i = 1:length(fasesRx)
% Demodulación
d = amdemod(sDBLn, fc, fs, fasesRx(i));

% Cálculo de la SNR
indices=find((t>1)&(t<=4));
estimaSNR = cov(m(indices))/cov(d(indices)-m(indices));
estimaSNR_dB = 10*log10(estimaSNR);

% Almacenar resultados en la matriz


resultados(i, :) = [fasesRx(i), estimaSNR_dB];
end

% Visualización de los resultados en una tabla


disp(' ')
disp('---------------------------------------------------------------------')
disp(' Fase en la portadora del receptor | SNR (dB)')
disp('---------------------------------------------------------------------')
for i = 1:length(fasesRx)
fprintf(' %5.3f rad | %5.3f\n',
resultados(i, 1), resultados(i, 2));
end
disp('---------------------------------------------------------------------')

% Parámetros temporales
iIni=0; % Instante inicial
tFin=10; % Instante final

fc=50; % Frecuencia de portadora


faseTx=0; % Fase de la portadora en transmisión
fm=5; % Frecuencia de la señal moduladora sinusoidal

fs=1000; % Frecuencia de muestreo


Ts=1/fs; % Tiempo de muestreo

desviaciones_ruido = 0.1:0.1:1; % Valores de desviación típica de la señal de


ruido
nPuntosTexto=20;
nFFT=4*4096; % Número de puntos de la FFT para la representación frecuencial

% Variable temporal
t=iIni:Ts:tFin;
% Señal moduladora
m=sin(2*pi*fm*t);
% Señal modulada de doble banda lateral (DBL)
sDBL = ammod(m,fc,fs,faseTx);

% Matriz para almacenar los resultados


resultados = zeros(length(desviaciones_ruido), 2);

% Para cada valor de desviación típica de la señal de ruido


for i = 1:length(desviaciones_ruido)
% Se suma ruido durante la transmisión (no se incluye atenuación)
ruido = desviaciones_ruido(i)*randn(size(t));
% Señal con ruido
sDBLn = sDBL + ruido;

% Demodulación
d = amdemod(sDBLn, fc, fs, faseTx);

% Cálculo de la SNR
indices=find((t>1)&(t<=4));
estimaSNR = cov(m(indices))/cov(d(indices)-m(indices));
estimaSNR_dB = 10*log10(estimaSNR);

% Almacenar resultados en la matriz


resultados(i, :) = [desviaciones_ruido(i), estimaSNR_dB];
end

% Graficar los valores obtenidos en función de σn


figure;
plot(resultados(:,1), resultados(:,2), 'o-', 'LineWidth', 2);
xlabel('Desviación típica de la señal de ruido (\sigma_n)');
ylabel('Relación señal a ruido (SNR) [dB]');
title('SNR en función de la desviación típica de la señal de ruido');
grid on;

% Parámetros temporales
iIni=0; % Instante inicial
tFin=10; % Instante final

fc=50; % Frecuencia de portadora


faseTx=0; % Fase de la portadora en transmisión
fm=5; % Frecuencia de la señal moduladora sinusoidal

fs=1000; % Frecuencia de muestreo


Ts=1/fs; % Tiempo de muestreo

indices_modulacion = [0.2, 0.4, 0.6, 0.8, 1]; % Valores del índice de modulación
nPuntosTexto=20;
nFFT=4*4096; % Número de puntos de la FFT para la representación frecuencial

% Variable temporal
t=iIni:Ts:tFin;
% Señal moduladora
m=sin(2*pi*fm*t);

% Matriz para almacenar los resultados


resultados = zeros(length(indices_modulacion), 2);

% Para cada valor del índice de modulación


for i = 1:length(indices_modulacion)
% Señal modulada de doble banda lateral (DBL)
sDBL = ammod(m, fc, fs, faseTx, indices_modulacion(i));
% Se suma ruido durante la transmisión (no se incluye atenuación)
ruido = 0.2*randn(size(t)); % Desviación estándar del ruido

% Señal con ruido


sDBLn = sDBL + ruido;

% Demodulación
d = amdemod(sDBLn, fc, fs, faseTx);

% Cálculo de la SNR
indices=find((t>1)&(t<=4));
estimaSNR = cov(m(indices))/cov(d(indices)-m(indices));
estimaSNR_dB = 10*log10(estimaSNR);

% Almacenar resultados en la matriz


resultados(i, :) = [indices_modulacion(i), estimaSNR_dB];
end

% Graficar los valores obtenidos en función de a


figure;
plot(resultados(:,1), resultados(:,2), 'o-', 'LineWidth', 2);
xlabel('Índice de modulación (a)');
ylabel('Relación señal a ruido (SNR) [dB]');
title('SNR en función del índice de modulación');
grid on;

También podría gustarte