.::BIENVENIDO A MATPIC - LA WEB DE MATLAB, SIMULINK, VHDL, MICROCONTROLADORES::.

MATPIC.COM

TITLE

SIMULACIÓN DE CÓDIGOS CONVOLUCIONALES

He aquí una simulación de códigos convolucionales. Uso de las funciones convenc para codificación y vitdec para decodificación. Mensaje generado con la función randint. Ruido añadido usando la función randerr.

%------CODIGOS CONVOLUCIONALES------

clc %Limpiar Command Window.

close all %Cerrar figuras.

clear all %Limpiar el wokspace.

%*-*-*-*-*-*-*-*-*CODIFICACIÓN*-*-*-*-*-*-*-*-*-*-*-

%Convertir un polinomio de código covolucional a un arbol de Trellis

%[3]-->Longitud de restricción (número de registros + 1).

%[5 7]-->Polinomio generador (valores octales)

t = poly2trellis([3],[5 4]);

%tasa=bits_entrada/bits_salida

tasa=rats(t.numInputSymbols/t.numOutputSymbols);

disp(['Radio de codificación:', num2str(tasa)])

%Longitud del mensaje

long=1000;

%Mensaje aleatorio de dos bits de simbolo

mensaje=randint(2*long,1);

%Codificación del mensaje.

codigo=convenc(mensaje,t);

%Generar patrones de errores de bits

ruido=randerr(4*long,1,[0 1; 0.9 0.1]);

%Añadir ruido a la señal.

senal_ruido=rem(codigo+ruido,2);

%Graficación de las señales.

subplot(5,1,1);stem(mensaje);title('Mensaje');xlim([0 length(mensaje)])

subplot(5,1,2);stem(codigo);title('Código')

subplot(5,1,3);stem(ruido);title('Ruido')

subplot(5,1,4);stem(senal_ruido);title('Mensaje + Ruido')

 

%*-*-*-*-*-*DE-CODIFICACIÓN*-*-*-*-*-*-*-*-*-*-*-*-*

%Uso de la función VITDEC.

%Decodificación con hard decision debido a que la

%entrada al decodificador es binaria (1 ó 0).

tb=10;

deco=vitdec(senal_ruido,t,tb,'cont','hard');

subplot(5,1,5);stem(deco(tb+1:end));title('Señal decodificada')

xlim([0 length(deco)])

%Correspondecia de datos:

%mensaje(1)-->deco(1+tb)

%La señal decodificado resulta desplazada por el valor de tb.

 

%*-*-*-*-*-*-Tasa de bits errados*-*-*-*-*-*-*-

%Uso de la función BITERR

[numero tasa posicion_bit]=biterr(deco(1+tb:end),mensaje(1:end-tb));

disp(['Número de errores: ',num2str(numero)])

disp(['Tasa de errores: ',num2str(tasa)])

if numero ~= 0

    posicion_de_bit_errado=find(posicion_bit)';

    disp(['Posición de bits errados: ',num2str(posicion_de_bit_errado)])

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

©2017 MATPIC

Prohibida cualquier copia parcial o total del contenido de esta web