Professional Documents
Culture Documents
Laboratorio 3 de Comunicaciones
Analgicas & Digitales.
Dayana Moreno Bedoya, Estudiante Ingeniera de Telecomunicaciones, Universidad
de Medelln.
Resumen
Este documento contiene la simulacin en matlab de un sistema de comunicaciones con interferencia
inter simblica (ISI) basado en modulacin de amplitud por cuadratura 4QAM y luego se aplica el
algoritmo de Viterbi para analizar y comparar las probabilidades de error.
Palabras Clave
Algoritmo de Viterbi, Interferencia Inter Simblica (ISI), QAM, Matlab, Sistema de Comunicacin.
I. INTRODUCCIN
uando smbolos consecutivos se transmiten sobre un canal por una modulacin lineal (tales como
ASK, QAM, etc.), la respuesta al impulso (o equivalentemente la respuesta en frecuencia) del
canal provoca que un smbolo transmitido se extienda en el dominio del tiempo. Esto causa
interferencia entre smbolos debido a que los smbolos transmitidos previamente afectan el smbolo
recibido actualmente, reduciendo as la tolerancia al ruido.
Para una decisin ptima de que smbolo fue transmitido realmente el Sr. Andrew J Viterbi describe
un esquema para reducir la complejidad a niveles ms manejables, el algoritmo de Viterbi
proporciona una manera eficaz de encontrar la secuencia de estados ms probables en el mximo
sentido de probabilidad a posteriori de un proceso que se supone es un proceso de Markov de tiempo
discreto de estados finitos. Tales procesos pueden ser subsumidos bajo el marco estadstico general
de la teora de decisin compuesta.
[] = P[k] + A [n k]
=0
2
Donde W[n] son realizaciones de una variable aleatoria Gaussiana de media cero y varianza N0/2. A
partir de lo anterior se pide lo siguiente:
real(q)>=
real(q)>=
real(q)<=
real(q)<=
0
0
0
0
&
&
&
&
imag(q)>=
imag(q)<=
imag(q)>=
imag(q)<=
0))
0))
0))
0))
error(k)= sum(randinf~=decoded)/N;
end
%Grafico las probabilidades de error
figure
semilogy(Eb_N0_dB,error,'m.-');
hold on
grid on
legend('ISI 4QAM');
xlabel('Es/No, dB')
ylabel('Symbol Error Rate')
title('Error Probability Curve for 4-QAM ISI')
=
=
=
=
1 + i;
1 - i;
-1 + i;
-1 - i;
El canal discreto equivalente es P[n], usar una constelacin 4QAM, el objetivo es simular el
comportamiento de la probabilidad de error empleando un decisor sin memoria (similar al
usado en la prctica anterior) y compararlo con un detector de secuencias de mxima
verosimilitud empleando el algoritmo de Viterbi.
%-----------------------Funcin Viterbi------------------------------%
function error = Viterbi(SNR,M)
Alpha = [1+j 1-j -1+j -1-j]; %Alfabeto 4QAM
rand_inf=randsrc(16,1,Alpha); %Smmbolos Aleatorios
p=[1; 0.8]; %Matriz del EDC
Es = 2; % Energa de simbolo 4QAM
Eb = 1; % Energa de Bit 4QAM
infomatrix=[rand_inf [1+j;rand_inf(1:end-1)]; 1+j rand_inf(end)];
Onoiseless=infomatrix * p; %Matriz de smbolos sin ruido
%Adicin del ruido
N0 = Eb/(10^(SNR/10));
noise = sqrt(N0/2)*randn(17,1) +i*sqrt(N0/2)*randn(17,1);
q= Onoiseless + noise;
%Viterbi
R1=(abs(q(1)-M(:,1))).^2;
R2=(abs(q(2)-M)).^2;
R3=(abs(q(3)-M)).^2;
4
R4=(abs(q(4)-M)).^2;
R5=(abs(q(5)-M)).^2;
R6=(abs(q(6)-M)).^2;
R7=(abs(q(7)-M)).^2;
R8=(abs(q(8)-M)).^2;
R9=(abs(q(9)-M)).^2;
R10=(abs(q(10)-M)).^2;
R11=(abs(q(11)-M)).^2;
R12=(abs(q(12)-M)).^2;
R13=(abs(q(13)-M)).^2;
R14=(abs(q(14)-M)).^2;
R15=(abs(q(15)-M)).^2;
R16=(abs(q(16)-M)).^2;
R17=(abs(q(17)-M)).^2;
5
end
[a(:,7) b(:,7)]=min(Metrica);
%Metrica8
for ii=1:4
Metrica(:,ii) = a(:,7) + R8(ii,:)';
end
[a(:,8) b(:,8)]=min(Metrica);
%Metrica8
for ii=1:4
Metrica(:,ii) = a(:,8) + R9(ii,:)';
end
[a(:,9) b(:,9)]=min(Metrica);
%Metrica10
for ii=1:4
Metrica(:,ii) = a(:,9) + R10(ii,:)';
end
[a(:,10) b(:,10)]=min(Metrica);
%Metrica11
for ii=1:4
Metrica(:,ii) = a(:,10) + R11(ii,:)';
end
[a(:,11) b(:,11)]=min(Metrica);
%Metrica12
for ii=1:4
Metrica(:,ii) = a(:,11) + R12(ii,:)';
end
[a(:,12) b(:,12)]=min(Metrica);
%Metrica13
for ii=1:4
Metrica(:,ii) = a(:,12) + R13(ii,:)';
end
[a(:,13) b(:,13)]=min(Metrica);
%Metrica14
for ii=1:4
Metrica(:,ii) = a(:,13) + R14(ii,:)';
end
[a(:,14) b(:,14)]=min(Metrica);
%Metrica15
for ii=1:4
Metrica(:,ii) = a(:,14) + R15(ii,:)';
end
[a(:,15) b(:,15)]=min(Metrica);
%Metrica16
for ii=1:4
Metrica(:,ii) = a(:,15) + R16(ii,:)';
end
6
[a(:,16) b(:,16)]=min(Metrica);
%Metrica17
for ii=1:4
Metrica(:,ii) = a(:,16) + R17(ii,:)';
end
[a(:,17) b(:,17)]=min(Metrica);
%Camino de menor mtrica acumulada
pos(18)=1;
for k=17:-1:2;
pos(k)=b(pos(k+1),k);
end
decoded=Alpha(pos(2:end));
error= sum(decoded(1:16).'~=rand_inf);
%-----------------------Programa Principal------------------------------%
%Algoritmo de Viterbi
clear all
close all
clc
Alpha = [1+j 1-j -1+j -1-j]; %alfabeto 4QAM
Eb_N0_dB = 0:2:20; %Relacion seal a ruido
N = 50000;
sym_error = 0; %Inicializar el error
for i=1:4
for j=1:4
M(i,j)= Alpha(i) + Alpha(j)*0.8;
end
end
for m = 1:length(Eb_N0_dB)
for k=1:N
error = Viterbi(Eb_N0_dB(m), M); %Llamo la funcion Viterbi
sym_error = sym_error + error;
end
errorsim(m) = sym_error/(16*N);
N0= 1/(10^(Eb_N0_dB(m)/10));
theory(m)= qfunc(2.66*(sqrt(2)/sqrt(N0))); %Viterbi Teorico
end
%Grafico las probabilidades de error
figure
semilogy(Eb_N0_dB,theory,'b.-');
hold on
semilogy(Eb_N0_dB,errorsim,'mx-');
grid on
axis([0 9 10^-20 1])
7
legend('Theory', 'Simulation');
xlabel('Es/No, dB')
ylabel('Symbol Error Rate')
title('Error Probability Curve for 4-QAM Viterbi')
8
II. CONCLUSIONES