WWW.MATPIC.COM

MATLAB - CÓDIGOS CONVOLUCIONALES

NOVEDADES

logo matpic

Nuevo Tutorial de SIMULINK.

Nuevo Simulación del código Miller.

Nuevo Códigos convolucionales. Simulación.

donaciones
FORO LOGO

 

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

 

buzon

Contáctanos

©2008 MATPIC