You are on page 1of 9

SEGUNDO PARCIAL COMUNICACIONES DIGITALES

Profesor:
Ivan Ladino

CAMILO FERNANDO FUENTES SILVA


COD. 9520529

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS


FACULTAD DE INGENIERIA
INGENIERIA ELECTRONICA
COMUNICACIONES DIGITALES
BOGOTA 12 DE DICIEMBRE DE 2011

1. Realizar la simulacin en Matlab de una fuente binaria y un canal binario simtrico y


realizar:
a. Medir Px(0), Px(1)
b. Medir Py/x(0/0)
Py/x(0/1)
Py/x(1/0)
Py/x(1/1)
c. Medir H(x)
d. Medir H(x/y)
e. I(x;y)=H(x)-H(x/y)
La representacin grafica del canal simtrico se muestra a continuacin:

Para el desarrollo de todos de los puntos pedidos anteriormente se realizo primero la


simulacin de la fuente binaria.
El cdigo mostrado a continuacin simula la fuente binaria permitiendo cambiar la
probabilidad de 0 y 1, se utilizan unas variables globales para permitir su utilizacin en
otras subrutinas, y se toma a Vx como la salida de la fuente.
function Vx=fuente_binaria;
%N es el numero de datos
%Px0 probabilidad de ceros de la fuente
%Px1 probabilidad de unos de la fuente
global N E Px0 Px1 r Vx Vy
for b=1:N
r=rand;
if (r<=Px0)
Vx(b)=0;
else
Vx(b)=1;
end
end

Una vez obtenida la respuesta de la fuente Vx, con esta se realiza la simulacin del canal
binario simtrico, se le adiciono la posibilidad de variar la probabilidad de error de canal,
tambin se utilizan variables globales para poder compartir informacin con otras
subrutinas y la salida del canal binario toma el nombre de Vy.
function Vy=canal_simetrico;
%N es el numero de datos provenientes de la fuente
%E es la probabilidad de error del canal
global N E Px0 Px1 r Vx Vy
for bout=1:N
if (Vx(bout)==0)
r=rand;
if(r<=1-E)
Vy(bout)=0;
else
Vy(bout)=1;
end
else
if(r<=1-E)
Vy(bout)=1;
else
Vy(bout)=0;
end
end
end
Una vez simulada la salida del canal binario se calculan las probabilidades a priori del
canal.
Se calculo la probabilidad de Px/y(0/0) para realizar este clculo es necesario contar el
numero de ceros en Vy dado que a la entrada hay ceros y este resultado dividirlo entre el
nmero de ceros en Vx.
function pyx00=program_pyx00;
global N E Px0 Px1 r Vx Vy pyx00
k=0;
q=0;
for b=1:N
if(Vx(b)==Vy(b))
if(Vy(b)==0)
k=k+1;
end
end
end
for b=1:N
if(Vx(b)==0)
q=q+1;
end
end

pyx00=k/q;
end
Se calcula la probabilidad de Py/x(0/1) Para realizar este clculo se cuenta el numero de
ceros en Vy dado que a la entrada hay unos y este resultado dividirlo entre el nmero de
unos en Vx.
function pyx01=program_pyx01;
global N E Px0 Px1 r Vx Vy pyx01
k=0;
q=0;
for b=1:N
if(Vx(b)~=Vy(b))
if(Vy(b)==0)
k=k+1;
end
end
end
for b=1:N
if(Vx(b)==1)
q=q+1;
end
end
pyx01=k/q;
end
Se calcula la probabilidad de Py/x(1/0) Para realizar este clculo se cuenta el numero de
unos en Vy dado que a la entrada hay ceros y este resultado dividirlo entre el nmero de
ceros en Vx.
function pyx10=program_pyx10;
global N E Px0 Px1 r Vx Vy pyx10
k=0;
q=0;
for b=1:N
if(Vx(b)~=Vy(b))
if(Vy(b)==1)
k=k+1;
end
end
end
for b=1:N
if(Vx(b)==0)
q=q+1;
end
end
pyx10=k/q;
end

Se calcula la probabilidad de Py/x(1/1) Para realizar este clculo se cuenta el numero de


unos en Vy dado que a la entrada hay unos y este resultado dividirlo entre el nmero de
unos en Vx.
function pyx11=program_pyx11;
global N E Px0 Px1 r Vx Vy pyx11
k=0;
q=0;
for b=1:N
if(Vx(b)==Vy(b))
if (Vy(b)==1)
k=k+1;
end
end
end
for b=1:N
if(Vx(b)==1)
q=q+1;
end
end
pyx11=k/q;
end
Ahora se calculan las probabilidades aposteriori:
Px\y(0\0): Para realizar este clculo es necesario contar el numero de ceros en Vx dado
que a la salida hay ceros y este resultado dividirlo entre el nmero de ceros en Vy.
function pxy00=program_pxy00;
global N E Px0 Px1 r Vx Vy pxy00
k=0;
q=0;
for b=1:N
if(Vx(b)==Vy(b))
if(Vx(b)==0)
k=k+1;
end
end
end
for b=1:N
if(Vy(b)==0)
q=q+1;
end
end
pxy00=k/q;
end

Px\y(1\0): Para realizar este clculo es necesario contar el numero de unos en Vx dado
que a la salida hay ceros y este resultado dividirlo entre el nmero de ceros en Vy.
function pxy10=program_pxy10;
global N E Px0 Px1 r Vx Vy pxy10
k=0;
q=0;
for b=1:N
if(Vx(b)~=Vy(b))
if(Vx(b)==1)
k=k+1;
end
end
end
for b=1:N
if(Vy(b)==0)
q=q+1;
end
end
pxy10=k/q;
end
Px\y(1\1): Para realizar este clculo es necesario contar el numero de unos en Vx dado
que a la salida hay unos y este resultado dividirlo entre el nmero de unos en Vy.
function pyx11=program_pyx11;
global N E Px0 Px1 r Vx Vy pyx11
k=0;
q=0;
for b=1:N
if(Vx(b)==Vy(b))
if (Vy(b)==1)
k=k+1;
end
end
end
for b=1:N
if(Vx(b)==1)
q=q+1;
end
end
pyx11=k/q;
end

Px\y(0\1): Para realizar este clculo es necesario contar el numero de ceros en Vx dado
que a la salida hay unos y este resultado dividirlo entre el nmero de unos en Vy.
function pxy01=program_pxy01;
global N E Px0 Px1 r Vx Vy pxy01
k=0;
q=0;
for b=1:N
if(Vx(b)~=Vy(b))
if(Vx(b)==0)
k=k+1;
end
end
end
for b=1:N
if(Vy(b)==1)
q=q+1;
end
end
pxy01=k/q;
end
Ahora se calcula la probabilidad Px(0) y Px(1)
Px(0):Para hallar esta probabilidad se hace un conteo del nmero de ceros a la entrada y
se divide entre el nmero de muestras N.
function px1=program_px1;
global N E Px0 Px1 r Vx Vy px1
k=0;
for b=1:N
if(Vx(b)==1)
k=k+1;
end
end
px1=k/N;
Px(1): Para hallar esta probabilidad se hace un conteo del nmero de unos a la entrada y
se divide entre el nmero de muestras N.
function px1=program_px1;
global N E Px0 Px1 r Vx Vy px1
k=0;
for b=1:N
if(Vx(b)==1)
k=k+1;
end
end
px1=k/N;

Ahora calculamos las probabilidades de ceros y unos aposteriori:


Py(0):Para hallar esta probabilidad se hace un conteo del nmero de ceros a la salida y se
divide entre el nmero de muestras N.
function py0=program_py0;
global N E Px0 Px1 r Vx Vy py0
k=0;
for b=1:N
if(Vy(b)==0)
k=k+1;
end
end
py0=k/N;
end
Py(1):Para hallar esta probabilidad se hace un conteo del nmero de unos a la salida y se
divide entre el nmero de muestras N.
function py1=program_py1;
global N E Px0 Px1 r Vx Vy py1
k=0;
for b=1:N
if(Vy(b)==1)
k=k+1;
end
end
py1=k/N;
end
Por ltimo calculamos las entropas para poder calcular la informacin mutua
La entropa de H(x) la calculamos mediante el siguiente cdigo:
function Hx=Hentropia_Hx;
global N E Px0 Px1 r Vx Vy Hx
Hx=Px0*(log(1/Px0)/log(2))+Px1*(log(1/Px1)/log(2));
end
La entropa de H(xy) se calcula mediante el siguiente cdigo
function Hxy=Hentropia_Hxy;
global N E pxy00 pxy01 pxy10 pxy11 r Vx Vy Hxy
Hxy=pxy00*(log(1/pxy00)/log(2))+pxy01*(log(1/pxy01)/log(2))+pxy10*(log(1/pxy10)/log(2))
+pxy11*(log(1/pxy11)/log(2));
end

Por ltimo se calcula la informacin mutua I(x;y) mediante el siguiente cdigo:


function Ixy=InformacionMutua_Ixy;
global N E Px0 Px1 r Vx Vy Hx Hxy
Ixy=Hx-Hxy;
end
2. Realizar la codificacin y decodificacin de un cdigo AMI
a) Se realiza un diagrama de estados para el cdigo

S1

S2

You might also like