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

Px(1) b. El código mostrado a continuación simula la fuente binaria permitiendo cambiar la probabilidad de 0 y 1. if (r<=Px0) Vx(b)=0. %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. I(x. function Vx=fuente_binaria. Medir Py/x(0/0) Py/x(0/1) Py/x(1/0) Py/x(1/1) c. Medir H(x) d. else Vx(b)=1. end end . y se toma a Vx como la salida de la fuente.1. Medir H(x/y) e.y)=H(x)-H(x/y) La representación grafica del canal simétrico se muestra a continuación: Para el desarrollo de todos de los puntos pedidos anteriormente se realizo primero la simulación de la fuente binaria. Medir Px(0). Realizar la simulación en Matlab de una fuente binaria y un canal binario simétrico y realizar: a. se utilizan unas variables globales para permitir su utilización en otras subrutinas.

también se utilizan variables globales para poder compartir información con otras subrutinas y la salida del canal binario toma el nombre de Vy. for b=1:N if(Vx(b)==Vy(b)) if(Vy(b)==0) k=k+1. q=0. Se calculo la probabilidad de Px/y(0/0) para realizar este cálculo es necesario contar el numero de ceros en Vy dado que a la entrada hay ceros y este resultado dividirlo entre el número de ceros en Vx. end end end Una vez simulada la salida del canal binario se calculan las probabilidades a priori del canal. %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. con esta se realiza la simulación del canal binario simétrico. end else if(r<=1-E) Vy(bout)=1. else Vy(bout)=1. else Vy(bout)=0. global N E Px0 Px1 r Vx Vy pyx00 k=0. if(r<=1-E) Vy(bout)=0. function pyx00=program_pyx00. end end end for b=1:N if(Vx(b)==0) q=q+1.Una vez obtenida la respuesta de la fuente Vx. end end . function Vy=canal_simetrico. se le adiciono la posibilidad de variar la probabilidad de error de canal.

end end pyx10=k/q. q=0. end end end for b=1:N if(Vx(b)==1) q=q+1. end . global N E Px0 Px1 r Vx Vy pyx01 k=0. function pyx01=program_pyx01.pyx00=k/q. global N E Px0 Px1 r Vx Vy pyx10 k=0. end end pyx01=k/q. for b=1:N if(Vx(b)~=Vy(b)) if(Vy(b)==1) k=k+1. end Se calcula la probabilidad de Py/x(1/0) Para realizar este cálculo se cuenta el numero de unos en Vy dado que a la entrada hay ceros y este resultado dividirlo entre el número de ceros en Vx. function pyx10=program_pyx10. 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. q=0. end Se calcula la probabilidad de Py/x(0/1) Para realizar este cálculo se cuenta el numero de ceros en Vy dado que a la entrada hay unos y este resultado dividirlo entre el número de unos en Vx.

function pyx11=program_pyx11. end end pyx11=k/q. end end end for b=1:N if(Vy(b)==0) q=q+1. end end pxy00=k/q. for b=1:N if(Vx(b)==Vy(b)) if (Vy(b)==1) k=k+1. for b=1:N if(Vx(b)==Vy(b)) if(Vx(b)==0) k=k+1. q=0. q=0. global N E Px0 Px1 r Vx Vy pyx11 k=0. end . global N E Px0 Px1 r Vx Vy pxy00 k=0.Se calcula la probabilidad de Py/x(1/1) Para realizar este cálculo se cuenta el numero de unos en Vy dado que a la entrada hay unos y este resultado dividirlo entre el número de unos en Vx. end end end for b=1:N if(Vx(b)==1) q=q+1. end Ahora se calculan las probabilidades aposteriori: Px\y(0###BOT_TEXT###): Para realizar este cálculo es necesario contar el numero de ceros en Vx dado que a la salida hay ceros y este resultado dividirlo entre el número de ceros en Vy. function pxy00=program_pxy00.

function pxy10=program_pxy10. global N E Px0 Px1 r Vx Vy pxy10 k=0. end end pyx11=k/q. 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. for b=1:N if(Vx(b)==Vy(b)) if (Vy(b)==1) k=k+1. end Px\y(1): Para realizar este cálculo es necesario contar el numero de unos en Vx dado que a la salida hay unos y este resultado dividirlo entre el número de unos en Vy. function pyx11=program_pyx11. end end end for b=1:N if(Vx(b)==1) q=q+1. global N E Px0 Px1 r Vx Vy pyx11 k=0. end . end end pxy10=k/q. q=0.Px\y(1###BOT_TEXT###): Para realizar este cálculo es necesario contar el numero de unos en Vx dado que a la salida hay ceros y este resultado dividirlo entre el número de ceros en Vy.

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

global N E Px0 Px1 r Vx Vy py1 k=0. end end py0=k/N. end La entropía de H(xy) se calcula mediante el siguiente código 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)). for b=1:N if(Vy(b)==1) k=k+1. function py0=program_py0. end .Ahora calculamos las probabilidades de ceros y unos aposteriori: Py(0):Para hallar esta probabilidad se hace un conteo del número de ceros a la salida y se divide entre el número de muestras N. end end py1=k/N. end Por último calculamos las entropías para poder calcular la información mutua La entropía de H(x) la calculamos mediante el siguiente código: function Hx=Hentropia_Hx. end Py(1):Para hallar esta probabilidad se hace un conteo del número de unos a la salida y se divide entre el número de muestras N. global N E Px0 Px1 r Vx Vy Hx Hx=Px0*(log(1/Px0)/log(2))+Px1*(log(1/Px1)/log(2)). function py1=program_py1. for b=1:N if(Vy(b)==0) k=k+1. global N E Px0 Px1 r Vx Vy py0 k=0.

Por último se calcula la información mutua I(x. global N E Px0 Px1 r Vx Vy Hx Hxy Ixy=Hx-Hxy. Realizar la codificación y decodificación de un código AMI a) Se realiza un diagrama de estados para el código S1 S2 . end 2.y) mediante el siguiente código: function Ixy=InformacionMutua_Ixy.