Documentos de Académico
Documentos de Profesional
Documentos de Cultura
close all;
Nb=5;
Rb=1; %bps
T=1/Rb;
end
NRZ_out=[];
RZ_out=[];
Manchester_out=[];
Vp=1;
for index=1:size(bit_to_symbol,2)
NRZ_out=[NRZ_out ones(1,200)*bit_to_symbol(index)];
end
figure;
stem(b, 'filled');
xlabel('Sequence Number')
ylabel ('Transmitted Bits [0/1]')
ylim ([0 2])
figure;
plot(NRZ_out, 'b', 'Linewidth', 2);
xlabel ('Time')
ylabel ('NRZ output')
ylim ([0 4])
grid on
t=0.005:0.005:5;
f=5;
Modulated=NRZ_out.*(sqrt(2/T)*sin(2*pi*f*t));
figure;
plot(Modulated);
xlabel ('Time')
ylabel ('Modulated Carrier')
ylim ([-6 6])
y=[];
received=[];
demodulated=Modulated.*(sqrt(2/T)*sin(2*pi*f*t));
for i=1:200:size(demodulated,2)
y=[y trapz(t(i:i+199),demodulated(i:i+199))];
end
for (i=1:1:size(y,2))
euclidean_dist=sqrt((y(i)-[0 1 2 3]).^2);
[val index]=min(euclidean_dist)
temp = [0 1 2 3];
index = temp (index);
switch(index)
case 0
received=[received 0 0];
case 1
received=[received 0 1];
case 2
received=[received 1 0];
case 3
received=[received 1 1];
end
end
%received=y>0;
%figure;
%stem(received,'filled', 'm')
%xlabel('Sequence Number')
%ylabel ('Received Bits [0/1]')
%ylim ([0 2])
David Alexander Gonzaga Davis
Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora cada una
de las combinaciones de bits digitales que codifica.
David Alexander Gonzaga Davis
-El siguiente programa emula una modulación BFSK , en donde sólo se codifica 1bit por
símbolo. Al script hay ay que proporcionarle un array de bits binario (llamado n en el código) y
el programa realiza la modulación FSK bit a bit con dos portadoras de diferente frecuencia f1 y
f2. F2=5Hz representa un bit cero o nivel bajo y F1 representa un 1 o nivel alto.
% MATLAB Program for FSK Transmitter and Receiver
% Code by Ajeet Kumar BKP Academy
% Modify May 12, 2020
% Md. Humayun Kabir
clc
close all
clear all
Captura el resultado e identifica sobre cada una de las portadoras el valor del bit que
codifica, si 0 o 1.
2. Modifica el valor de las frecuencias de forma que f1=5 hz y f2=10Hz. Realiza de nuevo
la simulación del apartado anterior. ¿Qué observas qué ha ocurrido ahora en la señal
portadora?.
Captura el resultado e identifica sobre cada una de las portadoras el tipo de bit que
codifica, si 0 o 1.
Haz un resumen de cómo codifica la modulación FSK la información digital e indica cuantos
bits por símbolo se codifican.
La modulación FSK utiliza dos frecuencias diferentes, y el desfase de estas se dará donde haya
un 0 o un 1, lo que deja una señal modulada como la de la imagen.
David Alexander Gonzaga Davis
MODULACIÓN QPSK.
El siguiente script emula una codificación QPSK. (Quadrature phase shift keying).
clear all;
close all;
%bits=[0,0,1,0,0,1,1,1,0,1,1,1];
bits=[0,0,0,1,1,0,1,1,0,0,0,1];
%Desfase OPSK
P1=pi/4; % 45 Grados
P2=0.75*pi; % 135 Grados
P3=1.25*pi; % 225 Grados
P4=1.75*pi; % 315 Grados
%Definicion de Frecuencias y periodos
f=1;
fs=100;
t=0:1/fs:1; % Periodo para la senal digital y portadora
t1=0:1/fs:2; % Periodo para la senal QPSK
%Definicion de variable a usar
tiempo=[];
tiempo1=[];
Digital=[];
Portadora=[];
QPSK=[];
% Secuencia de datos
for i=1:1:length(bits)
if bits(i)==0
z=zeros(1,length(t));
Digital = [Digital z];
end
if bits(i)==1
o=ones(1,length(t));
Digital = [Digital o];
end
% Portadora
Portadora=[Portadora (sin(2*pi*f*t))];
tiempo=[tiempo t];
t= t+1;
end
%Senal QPSK
for ii=1:2: length(bits)
% Caso 1 = 00 Desfase de 45
if bits(ii)==0 && bits(ii+1)==0
bits00= sin(2*pi*f*t1 + P1);
QPSK=[QPSK (bits00)];
end
end
% Senal Digital
subplot(3,1,1);
plot(tiempo, Digital,'lineWidth',2.5);
title('Senal Digital');
axis([0 12 -0.5 1.5]);
grid on;
% Senal Digital
subplot(3,1,2);
plot(tiempo,Portadora,'lineWidth',2.5);
title('Senal Portadora');
axis([0 12 -1.5 1.5]);
grid on;
% Senal Digital
subplot(3,1,3);
plot(tiempo1,QPSK,'lineWidth',2.5);
title('Senal QPSK');
axis([0 12 -1.5 1.5]);
grid on;
David Alexander Gonzaga Davis
Adjunta una captura de pantalla e identifica sobre cada símbolo de la portadora cada
una de las combinaciones de bits digitales que codifica.
Las modulaciones de fase varian un determinado ángulo de desfase. En concreto la QPSK varía
45, 135, 225 y 315 grados de desfase.
David Alexander Gonzaga Davis
MODULACIÓN M-QAM
%Message Signal
N = 16; %Number of bits
M = 4; %Modulation Order 128,256,512,1024
data = randi([0 M-1],1,N); %Message Infromation
s = qammod(data,M); %Modulated data (data,M,rotate angle)
bit_rate = 10.^3;
f = bit_rate; %minimum carrier frequency
Tb = 1/bit_rate ; %bit duration
t = 0:(Tb/1000):Tb ;
% %****************************Visualizing Data******************************
%Wave forms of the Signal
figure(1)
subplot(3,1,1);
stairs(data); grid minor; ylim([-0.5,M-0.5]); xlim([0,N]);
title('Mensaje a transmitir- Datos binarios representados en decimal ');
subplot(3,1,2);
plot(TxSig); grid minor; title(sprintf('%d QAM Modulated Signal',M));
xlim([0,N*10^3+N]);
subplot(3,1,3);
plot(RxSig);
grid minor;
title(sprintf('%d QAM Modulated Signal with AWGN',M));
xlim([0,N*10^3+N]);
4QAM
2 bits
Configura en el script una simulación M=16, N=128. A continuación observaremos el efecto del
ruido sobre la modulación. Controlaremos el nivel de ruido ajustando el parámetro SNR
(Relación señal ruido). Fija el valor de SNR=30db, Potencia señal es 1000 veces superior a la
potencia de ruido. Simúlala y adquiere una captura de la constelación.
Repite la simulación fijando una SNR=20db (Potencia señal es 100 veces superior a la del ruido)
y adquiere una captura de la constelación.
David Alexander Gonzaga Davis
Repite la simulación fijando una SNR=10db (Potencia señal es 10 veces superior a la del ruido)
y adquiere una captura de la constelación.
2. ¿Crees que podríamos transmitir correctamente con tal modulación 16 QAM y una
SNR de 10db?
Cambia ahora el valor de M=16 a M=4, manteniendo el nivel de ruido a SNR=10db y vuelve a
simular.
2. ¿Crees que la modulación 4-QAM podría trabajar con semejante nivel de ruido?.
David Alexander Gonzaga Davis